Pagini recente » Cod sursa (job #1488785) | Cod sursa (job #1155721)
#include <fstream>
using namespace std;
int n,i,k;
int a[30005],v[4*30005],sol[30005];
void create(int nod, int st, int dr) {
if(st==dr) {
v[nod]=1;
return;
}
int mid=(st+dr)/2;
if(i<=mid)
create(2*nod,st,mid);
else
create(2*nod+1,mid+1,dr);
v[nod]=v[2*nod]+v[nod*2+1];
}
void update(int nod, int st, int dr, int poz) {
if(st==dr) {
v[nod]=0;
sol[st]=i;
return;
}
int mid=(st+dr)/2;
if(poz<=v[2*nod])
update(2*nod,st,mid,poz);
else
update(2*nod+1,mid+1,dr,poz-v[2*nod]);
v[nod]=v[2*nod]+v[nod*2+1];
}
int main() {
ifstream f("schi.in");
ofstream g("schi.out");
f>>n;
for(i=1;i<=n;i++)
create(1,1,n);
for(i=1;i<=n;i++) {
f>>a[i];
}
for(i=n;i>0;i--)
update(1,1,n,a[i]);
for(i=1;i<=n;i++)
g<<sol[i]<<"\n";
return 0;
}