Pagini recente » Cod sursa (job #97060) | Cod sursa (job #2918985) | Cod sursa (job #2357115) | Cod sursa (job #1685915) | Cod sursa (job #2130296)
#include <bits/stdc++.h>
using namespace std;
int ai[120010],n,f;
void build(int o, int a, int b){
if (a==b) {ai[o]=1;return;}
int m=(a+b)/2;
build(o*2,a,m);
build(o*2+1,m+1,b);
ai[o]=ai[o*2]+ai[o*2+1];
}
void cauta(int o, int a, int b, int val){
if (a==b) {
printf("%d ",a);
ai[o]=0;
return;
}
int m=(a+b)/2;
if (val<=ai[o*2]) cauta(o*2,a,m,val);
else cauta(o*2+1,m+1,b,val-ai[o*2]);
ai[o]=ai[o*2]+ai[o*2+1];
}
int main()
{
freopen("order.in","r",stdin);
freopen("order.out","w",stdout);
scanf("%d",&n);
build(1,1,n);
int i,x=1, nr=n;
f=0;
for (i=1;i<=n;i++){
x+=i;
x%=nr;
if (x==0) x=nr;
nr--;
cauta(1,1,n,x);
x--;
}
return 0;
}