Pagini recente » Cod sursa (job #821640) | Palatulvoltaic | Ghober-distante | Profil PiciuAndreiAlin | Cod sursa (job #449969)
Cod sursa(job #449969)
#include <cstdio>
#define file_in "schi.in"
#define file_out "schi.out"
#define Nmax 30701
int n,v[Nmax];
int a[Nmax];
int sol[Nmax];
void build(int nod, int a, int b)
{
v[nod]=b-a+1;
if (a<b)
{
int mij=(a+b)>>1;
build(2*nod,a,mij);
build(2*nod+1,mij+1,b);
}
}
void update(int nod, int a, int b, int poz, int val)
{
v[nod]--;
if (a==b)
{
sol[a]=poz;
}
else
{
int mij=(a+b)>>1;
if (v[2*nod]>=val)
update(2*nod,a,mij,poz,val);
else
update(2*nod+1,mij+1,b,poz,val-v[2*nod]);
}
}
void citire()
{
int i;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &n);
for (i=1;i<=n;++i)
{
scanf("%d", &a[i]);
}
}
void solve()
{
int i;
build(1,1,n);
for (i=n;i>=1;--i)
update(1,1,n,i,a[i]);
for (i=1;i<=n;++i)
printf("%d\n", sol[i]);
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}