Pagini recente » Cod sursa (job #2462989) | Cod sursa (job #1728839) | Cod sursa (job #1641006) | Cod sursa (job #3284004) | Cod sursa (job #1344104)
#include <fstream>
using namespace std;
int n,v[30005],a[30005],b[30005];
ifstream f("schi.in");
ofstream g("schi.out");
void update(int pos,int val){
for(;pos<=n;pos+=pos&-pos) a[pos] += val;
}
int det(int val){
int sol =0 ,p;
for(p=1;p<=n; p*=2) ;
for(;p>0;p/=2){
if( sol + p <= n && a[sol+p] < val ){
val -= a[sol+p];
sol+=p;
}
}
++sol;
return sol;
}
int main()
{
f >> n;
for(int i=1;i<=n;++i){
f >> v[i];
update(i,1);
}
for(int i=n;i;i--){
int pos = det(v[i]);
b[pos] = i;
update(pos,-1);
}
for(int i=1;i<=n;++i){
g << b[i]<<" ";
}
return 0;
}