Cod sursa(job #1681007)

Utilizator Mr.RobotElliot Alderson Mr.Robot Data 9 aprilie 2016 11:05:13
Problema Farfurii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("farfurii.in");
ofstream out("farfurii.out");

long long n, k, s;
int v[100005];
bool b[100005];
int main()
{
    in >> n >> k;

    int m = 1;

    for( int i = 1; i <= n - 1; i ++ ){
        s = (n - i)*(n - i - 1)/2;
        if ( k <= s ){
            while( b[m] )
                m++;
            v[i] = m ++;
            b[m-1] = true;
        }
        else{
            int p = m;
            int nr = k - s;
            k = k - nr;
            while( nr )
            {
                p ++ ;
                if( !b[p] )
                    nr--;
            }
            b[p] = true;
            v[i] = p;
        }
    }

    while( b[m] )
        m++;

    v[n] = m;

    for( int i = 1; i <= n; i ++ ){
        out << v[i] << " ";
    }


    return 0;
}