Pagini recente » Cod sursa (job #39713) | Cod sursa (job #516249) | Cod sursa (job #1375840) | Cod sursa (job #1796138) | Cod sursa (job #1776374)
#include<cstdio>
int v[30001],arbint[4*30002],rasp[30001];
void update(int nod,int st,int dr,int poz,int val)
{
if(st==dr)
{
rasp[st]=val;
arbint[nod]=1;
return;
}
int mij=(st+dr)/2;
if(mij-st+1-arbint[2*nod]>=poz)
update(2*nod,st,mij,poz,val);
else
update(2*nod+1,mij+1,dr,poz-(mij-st+1-arbint[2*nod]),val);
arbint[nod]=arbint[2*nod]+arbint[2*nod+1];
}
int main()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
int n;
scanf("%d ",&n);
for(int i=1;i<=n;i++)
scanf("%d ",&v[i]);
for(int i=n;i>=1;i--)
update(1,1,n,v[i],i);
for(int i=1;i<=n;i++)
printf("%d\n",rasp[i]);
fclose(stdin);
fclose(stdout);
return 0;
}