Pagini recente » Cod sursa (job #2365648) | Cod sursa (job #177217) | Cod sursa (job #620660) | Cod sursa (job #2848610) | Cod sursa (job #4724)
Cod sursa(job #4724)
#include <stdio.h>
int N,K,MAX,POZM,aux,MAX1;
int i;
int S[100005],POZ[100005];
int main()
{
freopen("farfurii.in", "r", stdin);
freopen("farfurii.out", "w", stdout);
scanf("%d %d", &N, &K);
for (i=1;i<=N;i++)
{
S[i]=N-i+1;
POZ[N-i+1]=i;
if (i*(i-1)/2<=K)
MAX=i;
}
for (i=1;i<=MAX;i++)
{
S[i]=i+S[MAX+1];
POZ[i+S[MAX+1]]=i;
}
K-=MAX*(MAX-1)/2;
aux=POZ[MAX-1];
MAX1=MAX+K-2;
for (i=MAX-1;i<=MAX1;i++)
POZ[i]=POZ[i+1];
POZ[MAX1+1]=aux;
for (i=MAX-1;i<=MAX1+1;i++)
S[POZ[i]]=i;
for (i=N;i>1;i--)
printf("%d ", S[i]);
printf("%d\n", S[i]);
return 0;
}