Pagini recente » Cod sursa (job #2309950) | Cod sursa (job #12001) | Cod sursa (job #502796) | Cod sursa (job #2139826) | Cod sursa (job #169071)
Cod sursa(job #169071)
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");
#define N 100000
int a[N*5],sum;
int n,k,i;
void use(int,int,int);
int main()
{
fin>>n>>k;
for(i=1;i<=n;i++)
{
sum=max(1,(int)(k-(long long)(n-i)*(n-i-1)/2)+1);
if(sum>1) k-=sum-1;
//cout<<sum<<'\n';
use(1,1,n);
}
fout<<'\n';
return 0;
}
void use(int k,int i,int j)
{
//cout<<k<<' '<<a[k]<<' '<<i<<' '<<j<<' '<<sum<<'\n';
if(i==j)
{
sum-=!a[k];
if(!sum) fout<<i<<' ';
a[k]=1;
return;
}
int mij=(i+j)/2;
if(sum>j-i+1-a[k])
sum-=j-i+1-a[k];
else
{
use(2*k,i,mij);
if(sum) use(2*k+1,mij+1,j);
a[k]=a[2*k]+a[2*k+1];
}
}