Pagini recente » Cod sursa (job #2118229) | Cod sursa (job #2679266) | Cod sursa (job #2234401) | Cod sursa (job #2490536) | Cod sursa (job #1060154)
#include <cstdio>
using namespace std;
int a,b,poz,start;
int t[30002],vect[30002],rez[30002];
int maxim(int x,int y) {
return x+y;
}
void update(int p,int st,int dr) {
if (st==dr) {
t[p]=1;
rez[st] = start;
return;
}
int m=(st+dr)/2;
if (m-st+1-t[2*p]>=poz) update(2*p,st,m);
else
{
poz -= m-st+1-t[2*p];
update(2*p+1,m+1,dr);
}
t[p]=t[2*p]+t[2*p+1];
}
int main() {
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
int n,i,k;
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%d",&k);
vect[i]=k;
}
for(i=n; i>=1; i--) {
poz = vect[i];
start = i;
update(1,1,n);
}
for(i=1;i<=n;i++) printf("%d\n",rez[i]);
return 0;
}