Pagini recente » Cod sursa (job #75216) | Cod sursa (job #2544284) | Cod sursa (job #502518) | Cod sursa (job #386501) | Cod sursa (job #751293)
Cod sursa(job #751293)
#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 + 1;
}
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]);
update(r, -1);
rez[r] = i;
}
for (i = 1; i <= n; ++i)
fout << rez[i] << "\n";
return 0;
}