Pagini recente » Cod sursa (job #3226938) | Cod sursa (job #471195) | Cod sursa (job #2246724) | Cod sursa (job #3139077) | Cod sursa (job #1838253)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
const int Dim =30005;
int aib[Dim], c[Dim], a[Dim];
int n;
void update(int poz,int val)
{
for(int i=poz;i<=n;i+=i & -i)
aib[i]+=val;
}
int aib_bs(int k)
{
int i=0;
for(int p=1 << 15; p ; p>>=1)
if(i+p<=n and aib[i+p] < k)
{
k-=aib[i+p];
i+=p;
}
return i+1;
}
int main()
{
fin >> n;
for(int i=1;i<=n;++i)
{
fin >> a[i];
update(i,+1);
}
int loc;
for(int i=n;i;--i)
{
loc=aib_bs(a[i]);
update(loc,-1);
c[loc] = i;
}
for(int i=1;i<=n;++i)
{
fout << c[i] << endl;
}
return 0;
}