Pagini recente » Cod sursa (job #347064) | Cod sursa (job #353205) | Cod sursa (job #492531) | Cod sursa (job #2967945) | Cod sursa (job #2068149)
#include <bits/stdc++.h>
#define NMAX 30005
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int N;
int a[NMAX], ait[4 * NMAX], rsp[NMAX];
void upd(int poz, int nr, int val, int st, int dr)
{
if (st == dr)
{
ait[poz] = 1;
rsp[st] = nr;
return;
}
int mij = (st + dr) / 2;
if (val + ait[2 * poz] <= mij)
upd(2 * poz, nr, val, st, mij);
else upd(2 * poz + 1, nr, val + ait[2 * poz], mij + 1, dr);
ait[poz] = ait[2 * poz] + ait[2 * poz + 1];
}
int main()
{
fin >> N;
for (int i = 1; i <= N; i++)
fin >> a[i];
for (int i = N; i >= 1; i--)
upd(1, i, a[i], 1, N);
for (int i = 1; i <= N; i++)
fout << rsp[i] << "\n";
return 0;
}