Pagini recente » Cod sursa (job #79676) | Cod sursa (job #2627210) | Cod sursa (job #1327298) | Cod sursa (job #470455) | Cod sursa (job #2957403)
//Ilie Dumitru
#include<cstdio>
const int NMAX=100005;
FILE *f=fopen("farfurii.in", "r");
FILE *g=fopen("farfurii.out", "w");
long long int bs(long long int K)
{
long long int l=-1, r=NMAX, m;
while(r-l>1)
{
m=l+((r-l)>>1);
if(m*(m-1)/2<=K)
l=m;
else
r=m;
}
return l;
}
void solve(long long int N, long long int K)
{
int i, spec, n;
n=bs(K);
spec=N-n+(K-n*(n-1)/2);
n=N-n-1;
for(i=1;i<=n;++i)
fprintf(g, "%d ", i);
if(spec)
fprintf(g, "%d ", spec);
for(i=N;i>spec;--i)
fprintf(g, "%d ", i);
for(--i;i>n;--i)
fprintf(g, "%d ", i);
}
int main()
{
int N;
long long int K;
fscanf(f, "%d%lld", &N, &K);
solve(N, K);
fclose(f);
fclose(g);
return 0;
}