Cod sursa(job #2964225)

Utilizator Chris_BlackBlaga Cristian Chris_Black Data 12 ianuarie 2023 17:45:12
Problema Farfurii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;
ifstream cin("farfurii.in");
ofstream cout("farfurii.out");
int n,k;
///O abordare greedy
int comb(int x)
{return x*(x-1)/2;}
int cb(int x,int n)
{
    int st = 1,dr = n, pz = 0;
    while(st<=dr)
    {
        int mij = (st+dr)>>1;
        if(comb(mij) > x)
        {
            pz = mij;
            dr = mij -1;
        }
        else
            st = mij + 1;
    }
    if(comb(pz-1)==x)return pz-1;
    return pz;
}
void solve(int base,int n,int k)
{
    if(k==0)
    {
        for(int j=1;j<=n;++j)
            cout<<base+j<<' ';
        return;
    }
    int i = cb(k,n);
    for(int j=1; j <= n - i; ++j)
        cout<<base + j<<' ';
    solve(base + n - i + 1,i-1,k-(i-1));
    cout<<base + n - i + 1 <<' ';
}
int main()
{
    cin>>n>>k;
    solve(0,n,k);
    return 0;
}