Pagini recente » Cod sursa (job #462439) | Cod sursa (job #1469032) | Cod sursa (job #1601106) | Cod sursa (job #337223) | Cod sursa (job #2610945)
#include <bits/stdc++.h>
using namespace std;
ifstream r("schi.in");
ofstream w("schi.out");
int v[30002], ai[100000], fin[30002], n, dim=1;
void update(int poz)
{
ai[poz]=ai[poz*2]+ai[poz*2+1];
if(poz==1)
{
return;
}
else
{
update(poz/2);
}
}
int query(int val, int nod){
if(nod>dim){
return nod;
}
if(ai[nod*2]>=val){
return query(val, nod*2);
}
return query(val-ai[nod*2], nod*2+1);
}
int main()
{
r>>n;
while(dim<n)
{
dim*=2;
}
dim--;
for(int i=1;i<=n;i++){
r>>v[i];
ai[i+dim]=1;
update((i+dim)/2);
}
for(int i=n;i>0;i--){
int p=query(v[i], 1)-dim;
fin[p]=i;
ai[p+dim]=0;
update((p+dim)/2);
}
for(int i=1;i<=n;i++){
w<<fin[i]<<"\n";
}
return 0;
}