Lost Cows
segment tree is so amaing !!!
#include <stdio.h>
#include <memory.h>
#define N 8005
int T[N<<2];
int a[N];
int b[N];
void push_up(int rt)
{ T[rt]=T[rt<<1]+T[rt<<1|1] ; }
void build(int l,int r,int rt)
{
T[rt]=1;
if(l==r) return ;
int m=(l+r)>>1;
build(l,m,rt<<1);
build(m+1,r,rt<<1|1);
push_up(rt);
}
int query(int l,int r,int rt,int p)
{ if(l==r)
{ T[rt]=0;
return l;
}
int ret=0;
int m=(l+r)>>1;
if(p<=T[rt<<1] )
ret=query(l,m,rt<<1,p);
else
ret=query(m+1,r,rt<<1|1,p-T[rt<<1] );
push_up(rt);
return ret;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
build(1,n,1);
for(int i=2;i<=n;i++)
scanf("%d",&a[i]);
a[1]=0;
for(int i=n;i>=1;i--)
b[i]=query(1,n,1,a[i]+1);
for(int i=1;i<=n;i++)
printf("%d\n",b[i]);
}
}