Pagini recente » Cod sursa (job #3156716) | Cod sursa (job #2137272) | Cod sursa (job #1917299) | Cod sursa (job #2680688) | Cod sursa (job #2973251)
#include <bits/stdc++.h>
using namespace std;
const int N=1<<16,NMAX=3e4;
ifstream fin("schi.in");
ofstream fout("schi.out");
int aint[N],clasament[NMAX+1],v[NMAX+1];
void constr(int p,int st,int dr){
if(st==dr){
aint[p]=1;
return;
}
int m=(st+dr)/2,fs=2*p,fd=2*p+1;
constr(fs,st,m);
constr(fd,m+1,dr);
aint[p]=aint[fs]+aint[fd];
}
int pozitie(int p,int st,int dr,int conc){
if(st==dr){
aint[p]--;
return st;
}
int m=(st+dr)/2,fs=2*p,fd=2*p+1,rez;
if(aint[fs]>=conc){
rez=pozitie(fs,st,m,conc);
}
else{
rez=pozitie(fd,m+1,dr,conc-aint[fs]);
}
aint[p]--;
return rez;
}
int main(){
int n,i;
fin>>n;
constr(1,1,n);
for(i=1;i<=n;i++){
fin>>v[i];
}
for(i=n;i>=1;i--){
clasament[pozitie(1,1,n,v[i])]=i;
}
for(i=1;i<=n;i++){
fout<<clasament[i]<<"\n";
}
return 0;
}