Cod sursa(job #2964230)

Utilizator Chris_BlackBlaga Cristian Chris_Black Data 12 ianuarie 2023 17:57:46
Problema Farfurii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 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 bsearch2(int x,int n)
{
    int st = 1,dr = n,mij;
    while(st<dr)
    {
        mij = (st+dr)>>1;
        if(comb(mij) < x)
            st = mij+1;
        else
            dr = mij;
    }
    mij = (st+dr)>>1;
    if(comb(mij)<x)
        ++mij;
    return mij;
}
void solve(int base,int n,int k)
{
    if(k==0)
    {
        for(int j=1;j<=n;++j)
            cout<<base+j<<' ';
        return;
    }
    int i = bsearch2(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;
}