Pagini recente » Cod sursa (job #770155) | Cod sursa (job #1879978) | Cod sursa (job #3274189) | Cod sursa (job #1547559) | Cod sursa (job #3264237)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n, norg;
vector<int> v;
int aint[80000];
int rez[40000];
void Build()
{
for(int i = 0; i < norg; i++)
aint[n+i] = 1;
for(int i = n-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];
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];
for(int i = norg; i >= 1; i--)
{
int ind = CautaPoz(v[i]);
rez[ind] = i;
}
for(int i = 1; i <= norg; i++)
fout << rez[i] << "\n";
return 0;
}