Pagini recente » Cod sursa (job #2600597) | Cod sursa (job #33294) | Cod sursa (job #2416289) | Cod sursa (job #1045742) | Cod sursa (job #43032)
Cod sursa(job #43032)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define nmax 30010
#define amax 120010
int n,a[nmax],i,j,x,b[nmax],st,en,arb[amax];
void fill(const int x,const int st,const int en)
{
arb[x]=en-st+1;
if (en>st)
{
fill(x*2,st,(st+en)/2);
fill(x*2+1,(st+en)/2+1,en);
}
}
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",a+i);
fill(1,1,n);
for (i=n;i>0;i--)
{
x=1,st=1,en=n;
while (st<en)
{
if (a[i]>arb[x*2])
a[i]-=arb[x*2],x=x*2+1,st=(st+en)/2+1;
else
arb[x*2]--,x*=2,en=(st+en)/2;
}
b[st]=i;
}
for (i=1;i<=n;i++)
printf("%d\n",b[i]);
return 0;
}