Pagini recente » Cod sursa (job #1483552) | Cod sursa (job #2917853) | Cod sursa (job #2057186) | Cod sursa (job #331878) | Cod sursa (job #169078)
Cod sursa(job #169078)
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");
#define N 100000
int a[N*5];
long long n,k,i,sum;
void use(int,int,int);
int main()
{
fin>>n>>k;
for(i=1;i<=n;i++)
{
sum=max(1,k-(n-i)*(n-i-1)/2)+1);
if(sum>1) k-=sum-1;
use(1,1,n);
}
fout<<'\n';
return 0;
}
void use(int k,int i,int j)
{
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];
}
}