Cod sursa(job #2301033)

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

using namespace std;
ifstream f("farfurii.in");
ofstream g("farfurii.out");
int N, A[100001];
unsigned long long K;
void foo (int 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;
}