Pagini recente » Cod sursa (job #1580417) | Cod sursa (job #2233977) | Cod sursa (job #2961089) | Cod sursa (job #2258696) | Cod sursa (job #162472)
Cod sursa(job #162472)
#include<stdio.h>
#define Nm (1<<15)
#define md (l+r>>1)
#define ls (n<<1)
#define rs (n<<1|1)
int A[Nm],B[Nm],Cnt[Nm<<1],n,i;
void read()
{
int i;
freopen("schi.in","r",stdin);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",A+i);
}
void build(int n, int l, int r)
{
Cnt[n]=r-l+1;
if(l<r)
{
build(ls,l,md);
build(rs,md+1,r);
}
}
void insert(int n, int l, int r, int p)
{
if(l==r)
B[l]=i;
else
if(Cnt[ls]>=p)
insert(ls,l,md,p);
else
insert(rs,md+1,r,p-Cnt[ls]);
--Cnt[n];
}
void solve()
{
build(1,1,n);
for(i=n;i;--i)
insert(1,1,n,A[i]);
}
void write()
{
int i;
freopen("schi.out","w",stdout);
for(i=1;i<=n;++i)
printf("%d\n",B[i]);
}
int main()
{
read();
solve();
write();
return 0;
}