Pagini recente » Cod sursa (job #2815273) | Cod sursa (job #330704) | Cod sursa (job #495269) | Cod sursa (job #3202707) | Cod sursa (job #3264234)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n, norg;
vector<int> v;
int aint[70000];
int rez[40000];
void Build()
{
for(int i = 0; i < n; i++)
aint[n+i] = 1;
for(int i = norg-1; i > 0; i--)
aint[i] = aint[i*2]+aint[i*2+1];
}
void Sterge(int nod)
{
int ind = nod;
while(ind >= 1)
{
aint[ind]--;
ind /= 2;
}
}
int CautaPoz(int x)
{
int ind = 1;
while(ind < n)
{
int st = aint[ind*2];
int dr = aint[ind*2+1];
if(st >= x)
{
ind = ind*2;
}
else
{
x -= st;
ind = ind*2+1;
}
}
Sterge(ind);
return ind-n+1;
}
int main()
{
fin >> n;
v.resize(n+1);
norg = n;
int nnou = 1;
while(nnou < n)
nnou *= 2;
n = nnou;
Build();
for(int i = 1; i <= norg; i++)
fin >> v[i];
reverse(v.begin()+1, v.end());
for(int i = 1; i <= n; i++)
{
int ind = CautaPoz(v[i]);
rez[ind] = n-i+1;
}
for(int i = 1; i <= n; i++)
fout << rez[i] << "\n";
return 0;
}