Cod sursa(job #2701281)

Utilizator razvanradulescuRadulescu Razvan razvanradulescu Data 30 ianuarie 2021 12:00:05
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;

ifstream f("farfurii.in");
ofstream g("farfurii.out");

long long n, k, l = 1;

long long getNr(long long nr)
{
    return nr * (nr-1) / 2;
}

long long cautaBinar(long long nr)
{
    long long log = l, j = 0;
    for(; log; log>>=1)
        if(log + j <= n && getNr(log + j) <= nr)
            j+=log;
    return j;
}

void read()
{
    f>>n>>k;
    while(l < n)
        l<<=1;
}

void solve()
{
    long long p = cautaBinar(k);
    long long i = 1;
    for(; i<n - p; i++)
        g<<i<<" ";
    long long number = i + k - getNr(p);
    g<<number<<" ";
    for(int j = n; j >= i; j--)
    {
        if(number != j)
            g<<j<<" ";
    }
}

int main()
{
    read();
    solve();
    return 0;
}