Pagini recente » Cod sursa (job #2822842) | Cod sursa (job #1467682) | Cod sursa (job #382537) | Cod sursa (job #1625338) | Cod sursa (job #1822347)
# include <fstream>
# define DIM 30010
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int arb[4*DIM],v[DIM],poz[DIM],n,i;
void build(int nod,int st,int dr){
if(st==dr){
arb[nod]=1;
return;
}
int mij=(st+dr)/2;
build(2*nod,st,mij);
build(2*nod+1,mij+1,dr);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
int place(int nod,int st,int dr,int k){
if(st==dr){
arb[nod]=0;
return st;
}
int mij=(st+dr)/2,rez;
if(arb[2*nod]>=k)
rez=place(2*nod,st,mij,k);
else
rez=place(2*nod+1,mij+1,dr,k-arb[2*nod]);
arb[nod]=arb[2*nod]+arb[2*nod+1];
return rez;
}
int main () {
fin>>n;
build(1,1,n);
for(i=1;i<=n;i++)
fin>>v[i];
for(i=n;i>=1;i--)
poz[place(1,1,n,v[i])]=i;
for(i=1;i<=n;i++)
fout<<poz[i]<<"\n";
return 0;
}