Cod sursa(job #1552366)

Utilizator mihai2003LLL LLL mihai2003 Data 17 decembrie 2015 20:17:57
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define ull unsigned long long

using namespace std;

bool c[100005];

int main()
{
    freopen("farfurii.in", "r", stdin);
    FILE *g = fopen("farfurii.out", "w");

    ull n, k;
    cin >> n >> k;

    ull last = 1;
    for(int i = 1; i <= n; i ++) {
        ull j = n - i - 1;
        ull nxt = j * (j + 1) / 2;
        if(nxt >= k) {
            fprintf(g, "%lld ", last);
            c[last] = true;
            while(c[last])
                last ++;
        }
        else {
            ull j = k - nxt;
            ull in = last;
            while(j) {
                if(!c[last])
                    j --;
                last ++;
                while(c[last])
                    last ++;
            }
            fprintf(g, "%lld ", last);
            c[last] = true;
            k = nxt;
            last = in;
            i = n;
        }
    }
    for(int j = n; j >= last; j --)
        if(!c[j])
            fprintf(g, "%lld ", j);
    fprintf(g, "\n");
    return 0;
}