Cod sursa(job #1724950)

Utilizator radoneNeacsu Radu-Stefan radone Data 4 iulie 2016 16:48:09
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 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 ){
            v[i] = m ++;
            b[m-1] = true;
        }
        else{
            if( k > s ){
                int p = m;
                int nr = k - s;
                k = k - nr;
                while( nr )
                {
                    p++;
                    if( !b[p] )
                        nr--;
                }
                b[p] = true;
                v[i] = p;
            }
            int j = n;
            while( i <= n )
            {
                if( !b[j] )
                {
                    b[j] = true;
                    v[++i] = j;
                }
                j--;
            }
        }
    }



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


    return 0;
}