Pagini recente » Cod sursa (job #2619008) | Cod sursa (job #587213) | Cod sursa (job #2290202) | Cod sursa (job #724506) | Cod sursa (job #141578)
Cod sursa(job #141578)
#include <stdio.h>
#define maxl 65000
int el,put,i,j,k,n;
int c[maxl];
void parc(int poz)
{
if ((1<<put)-1<poz)
{
printf("%d ",poz-(1<<put)+1);
k-=c[poz];
c[poz]=0;
return;
}
if (c[2*poz]<k)
{
k-=c[2*poz];
parc(2*poz+1);
}
else parc(2*poz);
c[poz]=c[2*poz]+c[2*poz+1];
}
int main()
{
freopen("order.in","r",stdin);
freopen("order.out","w",stdout);
scanf("%d",&n);
for (i=1; i<=n; i++)
if ((1<<i)>=n)
{
put=i;
break;
}
for (i=1<<put; i<=(1<<put)+n-1; i++) c[i]=1;
for (i=put-1; i>=0; i--)
{
for (j=1<<i; j<=(1<<i+1)-1; j++)
c[j]=c[2*j]+c[2*j+1];
}
el=2;
for (i=1; i<=n; i++)
{
el--;
el=(el+i)%c[1];
if (el==0) el=c[1];
k=el;
parc(1);
}
printf("\n");
return 0;
}