Pagini recente » Cod sursa (job #543490) | Cod sursa (job #3148853) | Cod sursa (job #2537083) | Cod sursa (job #1072162) | Cod sursa (job #2774051)
#include <fstream>
using namespace std;
ifstream fin("order.in");
ofstream fout("order.out");
const int nmax=30000, n2max=(1<<15);
int v[n2max*2], sol[nmax+1];
int query(int nod, int l, int r, int p){
v[nod]--;
if(l==r){
return l;
}else{
if(v[nod*2]>=p){
return query(nod*2,l,(r+l)/2,p);
}else{
return query(nod*2+1,(r+l)/2+1,r,p-v[nod*2]);
}
}
}
int main(){
int n;
fin>>n;
int n2=1;
while(n2<n){
n2*=2;
}
for(int i=1;i<=n;i++){
v[n2+i-1]=1;
}
for(int i=n2-1;i>=1;i--){
v[i]=v[i*2]+v[i*2+1];
}
int p=1;
for(int i=1;i<=n;i++){
p=(p+i-1)%(n-i+1)+1;
fout<<query(1,1,n2,p)<<" ";
p--;
}
fout<<"\n";
return 0;
}