Cod sursa(job #1528731)

Utilizator armandpredaPreda Armand armandpreda Data 19 noiembrie 2015 23:05:31
Problema Farfurii Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

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

const int LIM=100001;
int n, k, v[LIM], viz[LIM], urm=1;
void find_next(int &x, int cate)
{
    while(cate)
    {
        x++;
        if(!viz[x]) cate--;
    }
}
int main()
{
    cin>>n>>k;
    for(int i=1; i<=n; ++i)
    {
        int perm=n-i;
        perm=perm*(perm-1)/2;
        if(k<perm)
        {
            v[i]=urm, viz[urm]=1;
            find_next(urm, 1);
        }
        else
        {
            int aux=urm;
            find_next(aux, k-perm);
            k=perm;
            v[i]=aux, viz[aux]=1;
        }
    }
    for(int i=1; i<=n; ++i)
        cout<<v[i]<<' ';
    return 0;
}