Pagini recente » Cod sursa (job #3354330) | Cod sursa (job #3312096) | Cod sursa (job #3347674) | Cod sursa (job #3303124) | Cod sursa (job #3334688)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("order.in");
ofstream fout("order.out");
const int AMAX = 12e4+1;
int aint[AMAX], n, nex=1;
void constructie(int nod, int l, int r){
if(l==r)
aint[nod]=1;
else{
int m=(l+r)/2;
constructie(2*nod, l, m);
constructie(2*nod+1, m+1, r);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
}
void update(int nod, int l, int r, int poz, int &rez){
if(l==r){
aint[nod]=0;
rez=l;
}
else{
int m=(l+r)/2;
if(poz<=aint[2*nod])
update(2*nod, l, m, poz, rez);
else
update(2*nod+1, m+1, r, poz-aint[2*nod], rez);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
//cout<<nod<<' '<<l<<' '<<r<<' '<<aint[nod]<<endl;
}
int main(){
fin>>n;
constructie(1, 1, n);
int val=2;
for(int i=1; i<=n;i++){
val=(val+i-1)%(n-i+1);
int rez;
if(val==0)
val=n-i+1;
//cout<<endl<<i<<' '<<val<<endl;
update(1, 1, n, val, rez);
fout<<rez<<' ';
}
return 0;
}