Pagini recente » Cod sursa (job #1484209) | Cod sursa (job #719477) | Cod sursa (job #39463) | Cod sursa (job #1913622) | Cod sursa (job #2902754)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("order.in");
ofstream g("order.out");
int n,pas,k,aint[100000];
void build(int n,int st, int dr)
{ if(st==dr)
{ aint[n]=1;
return;
}
int mij=(st+dr)/2;
build(n*2,st,mij);
build(n*2+1,mij+1,dr);
aint[n]=aint[n*2]+aint[n*2+1];
}
void update(int n,int st, int dr)
{ if(st==dr)
{ aint[n]=0;
g<<st<<' ';
return;
}
int mij=(st+dr)/2;
if(k<=aint[n*2])
update(n*2,st,mij);
else
{ k=k-aint[n*2];
update(2*n+1,mij+1,dr);
}
aint[n]--;
}
int main()
{ f>>n;
build(1,1,n);
pas=1;
k=2;
while(aint[1]!=0)
{ k=k+pas-1;
while(k>aint[1])
k=k-aint[1];
update(1,1,n);
pas++;
}
return 0;
}