Pagini recente » Cod sursa (job #41321) | Cod sursa (job #280410) | Cod sursa (job #1935669) | Cod sursa (job #2416793) | Cod sursa (job #219606)
Cod sursa(job #219606)
#include<stdio.h>
inline long long f(const long long a)
{
return (a*(a-1))>>1;
}
void show_N(const long long pos,const long long N)
{
long long i;
for(i=1; i<pos; ++i)
printf("%lld ",i);
for(i=N; i>=pos; --i)
printf("%lld ",i);
printf("\n");
}
void show_C(const long long pos,const long long N,const long long K)
{
long long i,aux=N-pos;
for(i=1; i<aux; ++i)
printf("%lld ",i);
aux=N-(f(pos+1)-K);
if( aux )
printf("%lld ",aux);
for(i=N; i>aux; --i)
printf("%lld ",i);
for(i=aux-1; i>=N-pos; --i)
printf("%lld ",i);
printf("\n");
}
int main()
{
freopen("farfurii.in","r",stdin);
freopen("farfurii.out","w",stdout);
long long K,N;
scanf("%lld%lld",&N,&K);
long long i,j;
for(i=1; i<N; i*=2);
for(j=1; i; i/=2)
if( j+i==N || f(j+i)<=K )
j+=i;
if( j==K )
show_N(N-j,N);
else
show_C(j,N,K);
return 0;
}