Pagini recente » Cod sursa (job #2795999) | Cod sursa (job #612221) | Cod sursa (job #326786) | Cod sursa (job #411310) | Cod sursa (job #2989298)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n;
int aint[100005],v[30005],sol[30005];
void read(){
fin>>n;
}
void build(int nod,int st,int dr){
if(st==dr){
aint[nod]=1;
return;
}
else{
int mij=(st+dr)/2;
build(2*nod,st,mij);
build(2*nod+1,mij+1,dr);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
}
int Update(int nod,int st,int dr,int x){
int rez;
if(st==dr){
aint[nod]=0;
return st;
}
int mij=(st+dr)/2;
if(aint[2*nod]>=x)
rez=Update(2*nod,st,mij,x);
else rez=Update(2*nod+1,mij+1,dr,x-aint[2*nod]);
aint[nod]--;
return rez;
}
void solve(){
build(1,1,n);
for(int i=1;i<=n;++i)
fin>>v[i];
for(int i=n;i>=1;--i)
sol[Update(1,1,n,v[i])]=i;
for(int i=1;i<=n;++i)
fout<<sol[i]<<"\n";
}
int main(){
read();
solve();
return 0;
}