PKU 1032 Parliament

Parliament

グループは2つとは限らないのか。動的計画法。桁あふれするので、小さなNに対しての答えから法則を探した。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int N;  cin >> N;

    vector<int> v;
    int s = 0;
    for ( int i=2; s+i<=N; i++ )
        v.push_back( i ),
        s += i;

    int n = (int)v.size();
    for ( int i=0; i<N-s; i++ )
        v[n-1-i%n]++;

    for ( int i=0; i<n; i++ )
        cout << (i>0?" ":"") << v[i];
    cout << endl;
}