Pagini recente » Cod sursa (job #1827378) | Cod sursa (job #1396622) | Cod sursa (job #536389) | Cod sursa (job #1790657) | Cod sursa (job #2772730)
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
const int nmax=30000, n2max=(1<<15);
int v[n2max*2], u[nmax+1], sol[nmax+1];
int query(int nod, int l, int r, int ui){
if(l==r){
return r;
}else if((r-l+1)/2-v[nod*2]>=ui){
return query(nod*2,l,(l+r)/2,ui);
}else{
return query(nod*2+1,(l+r)/2+1,r,ui-(r-l+1)/2+v[nod*2]);
}
}
int main(){
int n;
fin>>n;
for(int i=1;i<=n;i++){
fin>>u[i];
}
int n2=1;
while(n2<n){
n2*=2;
}
for(int i=n;i>0;i--){
int x=query(1,1,n2,u[i]);
sol[x]=i;
v[n2-1+x]=1;
for(int j=(n2-1+x)/2;j>=1;j--){
v[j]=v[j*2]+v[j*2+1];
}
}
for(int i=1;i<=n;i++){
fout<<sol[i]<<" ";
}
return 0;
}