Pagini recente » Cod sursa (job #309512) | Cod sursa (job #858702) | Cod sursa (job #2799307) | Cod sursa (job #1560128) | Cod sursa (job #4720)
Cod sursa(job #4720)
#include <stdio.h>
int N,K,MAX, POZM, POZm, aux;
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;
for (;K;K--)
{
POZM=POZ[1+S[MAX+1]];
aux=S[MAX+1];
S[MAX+1]=S[POZM];
S[POZM]=aux;
POZ[S[MAX+1]]=MAX+1;
POZ[S[MAX+1]-1]=POZM;
}
for (i=N;i>1;i--)
printf("%d ", S[i]);
printf("%d\n", S[i]);
return 0;
}