Pagini recente » Cod sursa (job #1832808) | Cod sursa (job #1496346) | Cod sursa (job #302882) | Cod sursa (job #1607842) | Cod sursa (job #751294)
Cod sursa(job #751294)
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
#define MAXN 30100
int a[MAXN], n, arb[MAXN], rez[MAXN];
void update (int poz, int val) {
while (poz <= n) {
arb[poz] += val;
poz += poz & (-poz);
}
}
int query (int x) {
int i, step;
for (step = 1; step <= n; step <<= 1);
for (i = 0; step; step >>= 1) {
if(i + step <= n && arb[i + step] <= x) {
x -= arb[i + step];
i += step;
}
}
return i;
}
int main() {
int i, r;
fin >> n;
for (i = 1; i <= n; ++i) {
fin >> a[i];
update(i, 1);
}
for (i = n; i > 0; --i) {
r = query(a[i] - 1) + 1;
update(r, -1);
rez[r] = i;
}
for (i = 1; i <= n; ++i)
fout << rez[i] << "\n";
return 0;
}