Pagini recente » Cod sursa (job #1389456) | Cod sursa (job #2110737) | Cod sursa (job #1747191) | Cod sursa (job #1264737) | Cod sursa (job #2669164)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
const int N = 1 << 17;
const int Nmax = 30000;
int t[N], v[Nmax], sol[Nmax], nod, poz;
void actualizare(int p, int st, int dr)
{
if (st == dr)
{
sol[st] = nod;
t[p]++;
return;
}
int m = (st + dr) / 2;
if (poz <= (m - st + 1 - t[2 * p]))
{
actualizare(p * 2, st, m);
}
else
{
poz -= (m - st + 1 - t[p * 2]);
actualizare(p * 2 + 1, m + 1, dr);
}
t[p]++;
}
int main()
{
int n;
f >> n;
t[1] = 1;
for (int i = 1; i <= n; i++)
f >> v[i];
for (int i = n; i > 0; i--)
{
nod = i;
poz = v[i];
actualizare(1, 1, n);
}
for (int i = 1; i <= n; i++)
g << sol[i] << '\n';
return 0;
}