Pagini recente » Cod sursa (job #2968902) | Cod sursa (job #2560047) | Cod sursa (job #441985) | Cod sursa (job #599175) | Cod sursa (job #253319)
Cod sursa(job #253319)
#include <cstdio>
#include <algorithm>
#define IN "schi.in"
#define OUT "schi.out"
#define left (nod << 1)
#define bit(x) ((x)&(x-1))^(x)
#define II inline
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define N_MAX 1<<15
int S[N_MAX],A[1<<16],V[N_MAX];
int N;
II void scan()
{
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%d\n", &N);
FOR(i,1,N)
scanf("%d", &V[i]);
}
II void update(int x)
{
for(int i=x;i<=N;i += bit(i) )
++A[i];
}
II int querry(int x)
{
int sum(x);
for(int i=--x;i>=1;i -= bit(i) )
sum -= A[i];
return sum;
}
void solve()
{
int Step,step,m;
for(Step = 1;Step < N;Step <<= 1);
for(int i=N;i>=1;--i)
{
for(m = 1,step = Step;step;step >>= 1)
if(m + step <= N && querry(m + step) <= V[i])
m += step;
S[m] = i;
update(m);
}
FOR(i,1,N)
printf("%d\n",S[i]);
}
int main()
{
scan();
solve();
return 0;
}