Pagini recente » Cod sursa (job #2637407) | Cod sursa (job #2558516) | Cod sursa (job #2485101) | Cod sursa (job #355411) | Cod sursa (job #3249510)
#include <fstream>
using namespace std;
ifstream cin("schi.in");
ofstream cout("schi.out");
int n,aib[30001],v[30001],r[30001];
void upd(int i,int val){
while(i<=n){
aib[i]+=val;
i+=(i&-i);
};
};
int get(int i){
int sum=0;
while(i>0){
sum+=aib[i];
i-=(i&-i);
};
return sum;
};
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
upd(i,1);
};
for(int i=n;i>0;i--){
int s=1,d=n+1;
while(s<d){
int m=(s+d)/2;
int x=get(m);
if(x>=v[i]) d=m;
else if(x<v[i]) s=m+1;
else{
s=m;
break;
}
};
r[s]=i;
upd(s,-1);
};
for(int i=1;i<=n;i++){
cout<<r[i]<<"\n";
}
return 0;
}