Pagini recente » Cod sursa (job #3287439) | Cod sursa (job #639637) | Cod sursa (job #719) | Cod sursa (job #1903738) | Cod sursa (job #1766219)
#include<fstream>
#include<cstdio>
#include<cstdlib>
#define dim 30009
using namespace std;
long n,poz,val,a[dim],pi[dim],pf[dim],mij;
void schimba(long nod,long st,long dr)
{
if(st==dr)
{
a[nod]=val;
return;
}
mij=(st+dr)/2;
if(poz<=mij)
schimba(nod*2,st,mij);
else
schimba(nod*2+1,mij+1,dr);
a[nod]=a[nod*2]+a[nod*2+1];
}
void detclas(long nod,long st,long dr,long sum)
{
if(st==dr)
poz=st;
else
{
mij=(st+dr)/2;
if(a[nod*2]>=sum)
detclas(nod*2,st,mij,sum);
else
detclas(nod*2+1,mij+1,dr,sum-a[nod*2]);
}
}
void citire()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&pi[i]);
poz=i;
val=1;
schimba(1,1,n);
}
}
void rez()
{
val=0;
for(int i=n;i>=1;i--)
{
detclas(1,1,n,pi[i]);
pf[poz]=i;
schimba(1,1,n);
}
}
void afisare()
{
for(int i=1;i<=n;i++)
printf("%d\n",pf[i]);
}
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
citire();
rez();
afisare();
}