Pagini recente » Cod sursa (job #208753) | Cod sursa (job #330697) | Cod sursa (job #933385) | Cod sursa (job #1459337) | Cod sursa (job #2964230)
#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;
}