Pagini recente » Cod sursa (job #1241312) | Cod sursa (job #1528997) | Cod sursa (job #1837578) | Cod sursa (job #2837052) | Cod sursa (job #320835)
Cod sursa(job #320835)
# include <cstdio>
# define FIN "schi.in"
# define FOUT "schi.out"
# define MAX_N 1 << 16
# define MAX_M 1 << 15
int N, i;
int V[MAX_M];
int A[MAX_N];
int L[MAX_M];
void Update(int N, int St, int Dr, int Ind, int Loc)
{
if (St == Dr)
{
++A[N];
L[St] = Ind;
return;
}
int Mij = (St + Dr) >> 1;
if (Loc <= Mij - St + 1 - A[N << 1]) Update(N << 1, St, Mij, Ind, Loc);
else Update(N << 1 | 1, Mij + 1, Dr, Ind, Loc - Mij + St - 1 + A[N << 1]);
A[N] = A[N << 1] + A[N << 1 | 1];
}
int main()
{
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; ++i) scanf("%d", &V[i]);
for (i = N; i >= 1; --i) Update(1, 1, N, i, V[i]);
for (i = 1; i <= N; ++i) printf("%d\n", L[i]);
return 0;
}