Cod sursa(job #2301034)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 12 decembrie 2018 15:46:28
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>

using namespace std;
ifstream f("farfurii.in");
ofstream g("farfurii.out");
unsigned long long N, A[100001];
unsigned long long K;
void foo (unsigned long long poz, unsigned long long k) {
    if (poz == N) {
        A[poz] = poz;
        return ;
    }
    unsigned long long val = (N - poz) * (N - poz - 1) / 2;
    if (val >= k) {
        A[poz] = poz;
        foo(poz + 1, k);
    }
    else {
        A[poz] = poz + (k - val);
        int pozi = poz;
        for (int i = N; i > A[pozi]; --i)
            A[++poz] = i;
        for (int i = A[pozi] - 1; i >= pozi; --i)
            A[++poz] = i;
    }
}
int main()
{
    f >> N >> K;
    foo(1, K);
    for (int i = 1; i <= N; ++i)
        g << A[i] << ' ';
    return 0;
}