Pagini recente » Istoria paginii runda/oji-2018-11-12/clasament | Cod sursa (job #465308) | Cod sursa (job #2818209) | Cod sursa (job #250778) | Cod sursa (job #607179)
Cod sursa(job #607179)
# include <cstdio>
const char *FIN = "schi.in", *FOU = "schi.out";
const int MAX = 30005;
int N, cnt, V[MAX], T[MAX], poz[MAX];
inline void update (int nod) {
for (; nod <= N; nod += nod & -nod)
++T[nod];
}
inline int query (int nod) {
int sum = nod;
for (--nod; nod > 0; nod -= nod & -nod)
sum -= T[nod];
return sum;
}
int main (void) {
freopen (FIN, "r", stdin);
freopen (FOU, "w", stdout);
scanf ("%d", &N);
for (int i = 1; i <= N; ++i)
scanf ("%d", V + i);
for (cnt = 1; cnt << 1 <= N; cnt <<= 1);
for (int i = N, j, k; i; --i) {
for (j = 1, k = cnt; k; k >>= 1)
if (j + k <= N && query (j + k) <= V[i])
j += k;
poz[j] = i, update (j);
}
for (int i = 1; i <= N; ++i)
printf ("%d\n", poz[i]);
}