Pagini recente » Cod sursa (job #2058999) | Statistici Malita Dragos-Ionut (malita.dragos) | Cod sursa (job #829718) | Diferente pentru problema/dstar intre reviziile 12 si 13 | Cod sursa (job #1331836)
#include<stdio.h>
int v[30005],sol[30005],aib[30004],n;
int lcb(int x)
{
return x&(-x);
}
void update(int poz,int x)
{
while(poz<=n)
{
aib[poz]+=x;
poz+=lcb(poz);
}
}
int bs(int x)
{
int sol=0;
for(int b=20;b>=0;b--)
{
if(sol+(1<<b)<=n&&aib[sol+(1<<b)]<x)
{
sol+=(1<<b);
x-=aib[sol];
}
}
return sol+1;
}
int main()
{
int i;
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
update(i,1);
}
int t;
for(i=n;i>=1;i--)
{
t=bs(v[i]);
sol[t]=i;
update(t,-1);
}
for(i=1;i<=n;i++)
printf("%d\n",sol[i]);
return 0;
}