Pagini recente » Cod sursa (job #589233) | Cod sursa (job #2624617) | Cod sursa (job #2436245) | Cod sursa (job #499540) | Cod sursa (job #3184220)
#include <bits/stdc++.h>
#define NN 30005
using namespace std;
ifstream fin ("schi.in");
ofstream fout ("schi.out");
int n, v[NN], r[NN], aint[3*NN];
void setaint()
{
aint[1] = n;
int nr1 = 0, i = 1;
while(nr1 != n)
{
if(aint[i] == 1)
nr1++;
else
{
aint[i*2] = aint[i] / 2;
aint[i*2 + 1] = aint[i] / 2 + aint[i] % 2;
}
i++;
}
}
void update(int nod, int st, int dr, int pos, int schior)
{
if(st == dr)
{
aint[nod] = 0;
r[st] = schior;
return;
}
int mid = (st + dr) / 2;
if(pos <= aint[nod * 2])
update(nod * 2, st, mid, pos, schior);
else
update(nod * 2 + 1, mid + 1, dr, pos - aint[nod * 2], schior);
aint[nod]--;
}
int main()
{
fin >> n;
for(int i = 1 ; i <= n ; i++)
fin >> v[i];
setaint();
for(int i = n ; i >= 1 ; i--)
{
update(1, 1, n, v[i], i);
}
for(int i = 1 ; i <= n ; i++)
{
fout << r[i] << '\n';
}
return 0;
}