Pagini recente » Cod sursa (job #1769124) | Cod sursa (job #2284802) | Cod sursa (job #983847) | Cod sursa (job #2669261) | Cod sursa (job #852094)
Cod sursa(job #852094)
//#include<iostream>
#include<fstream>
using namespace std;
int arbint[150000];
int el,aux;
ofstream g("order.out");
void buildarbint(int nod,int st, int dr){
if(st==dr)arbint[nod]=1;
else{
int div=(st+dr)/2;
buildarbint(2*nod,st,div);
buildarbint(2*nod+1,div+1,dr);
arbint[nod]=arbint[2*nod]+arbint[2*nod+1];}
}
void cautare(int nod,int st,int dr){
if(st==dr){
g<<st<<" ";
arbint[nod]=0;
}
else{
int div=(st+dr)/2;
if(el<=arbint[2*nod]){
cautare(2*nod,st,div);
arbint[nod]=arbint[2*nod]+arbint[2*nod+1];
}
else{
el-=arbint[2*nod];
cautare(2*nod+1,div+1,dr);
arbint[nod]=arbint[2*nod]+arbint[2*nod+1];
aux=aux+arbint[nod]-arbint[2*nod+1];
}
}
}
int main(){
int i,n;
ifstream f("order.in");
f>>n;
aux=1;
buildarbint(1,1,n);
for(i=1;i<=n;i++){
el=(aux+i)%arbint[1];
if(el==0)el=arbint[1];
aux=0;
cautare(1,1,n);
}
}