Pagini recente » Cod sursa (job #1648370) | Cod sursa (job #2257976) | Cod sursa (job #2947481) | Cod sursa (job #2568215) | Cod sursa (job #143486)
Cod sursa(job #143486)
#include <stdio.h>
int n,a[32000],b[70000],p,vp,rez[32000],val,i;
void proc(int x)
{
if (x>=vp)
{
val-=b[x];
rez[x-vp+1]=i;
b[x]=0;
return;
}
if (b[x*2]<val)
{
val-=b[x*2];
proc(x*2+1);
}
else proc(x*2);
b[x]=b[x*2]+b[x*2+1];
}
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]);
p=0;
while (1<<p<n) vp=1<<(++p);
for (i=vp; i<vp+n; ++i) b[i]=1;
for (i=p-1; i>=0; --i)
for (int j=1<<i; j<1<<(i+1); ++j) b[j]=b[j*2]+b[j*2+1];
for (i=n; i>0; --i) {val=a[i];proc(1);}
for (i=1; i<=n; ++i) printf("%d\n",rez[i]);
return 0;
}