Pagini recente » Cod sursa (job #873861) | Cod sursa (job #3294781) | Cod sursa (job #126197) | Cod sursa (job #2575889) | Cod sursa (job #2064541)
#include <iostream>
#include <fstream>
#define Nmax 30005
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int arb[4 * Nmax], b[Nmax], a[Nmax], n;
void upd(int nod, int L, int R, int poz, int val)
{
int mij = (L + R)/2;
if(L == R)
{
b[L] = val;
arb[nod] = 1;
return;
}
if(poz + arb[nod * 2] <= mij)
upd(nod * 2, L, mij, poz, val);
else upd(nod * 2 + 1, mij + 1, R, poz + arb[2 * nod], val);
arb[nod] = arb[2 * nod] + arb[2 * nod + 1];
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i];
for(int i = n; i >= 1; i--)
upd(1, 1, n, a[i], i);
for(int i = 1; i <= n; i++)fout << b[i] << "\n";
return 0;
}