Pagini recente » Cod sursa (job #2624886) | Cod sursa (job #2161662) | Cod sursa (job #232378) | Cod sursa (job #1521902) | Cod sursa (job #2123897)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n,x,i;
int a[30001],ans[30001],v[120010];
void build(int nod,int l,int r,int x)
{
if(l==r)
{
v[nod]=1;
return ;
}
int m=(l+r)/2;
if(x<=m)
build(nod*2,l,m,x);
else build(nod*2+1,m+1,r,x);
v[nod]=v[nod*2]+v[nod*2+1];
}
void query(int nod,int l,int r,int val,int poz)
{
if(l==r)
{
ans[l]=poz;
v[nod]=0;
return ;
}
int m=(l+r)/2;
if(val<=v[nod*2])
query(nod*2,l,m,val,poz);
else query(nod*2+1,m+1,r,val-v[nod*2],poz);
v[nod]=v[nod*2]+v[nod*2+1];
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
build(1,1,n,i);
fin>>a[i];
}
for(i=n;i>0;i--)
{
query(1,1,n,a[i],i);
}
for(i=1;i<=n;i++)
fout<<ans[i]<<'\n';
return 0;
}