Cod sursa(job #2972854)

Utilizator Pop_EmilPal Tamas Pop_Emil Data 30 ianuarie 2023 15:36:54
Problema Farfurii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
using namespace std;
FILE *in = fopen("farfurii.in", "r"), *out = fopen("farfurii.out", "w");

int N, t, vmax;
bool tset = false;
unsigned long long K, cap, cap2;

int main()
{
    fscanf(in, "%d %lld", &N, &K);

    vmax = N;
    for (int i = 1; i <= N; ++i){
        cap = (N - i)*(N - i - 1) / 2;
        if (cap > K)
            fprintf(out, "%d ", i);
        else {
            cap2 = (N - i + 1)*(N - i) / 2;
            if (cap2 == K){
                K -= N - i;
                fprintf(out, "%d ", vmax);

                if (tset && vmax - 1 == t)
                    vmax -= 2;
                else
                    --vmax;
            }
            else {
                t = i + K - cap;
                K -= t - i;
                tset = true;
                fprintf(out, "%d ", t);
            }

        }
    }

    return 0;
}