Pagini recente » Cod sursa (job #2455165) | Cod sursa (job #191863) | Cod sursa (job #922113) | Cod sursa (job #922101) | Cod sursa (job #2964225)
#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;
}