Pagini recente » Cod sursa (job #2219595) | Cod sursa (job #2524873) | Cod sursa (job #2698030) | Cod sursa (job #2999705) | Cod sursa (job #3188731)
#include <fstream>
using namespace std;
ifstream cin("schi.in");
ofstream cout("schi.out");
int arb[60002],n,i,v[30001],rsp[30001];
void update(int nod,int st,int dr,int pos,int val)
{if(st==dr)
{
arb[nod]=val;
return;
}
int mid=(st+dr)/2;
if(pos<=mid)
update(nod*2,st,mid,pos,val);
else
update(nod*2+1,mid+1,dr,pos,val);
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
int querry(int nod,int val)
{if(nod>=n)
return nod-n+1;
if(arb[nod*2]>=val)
return querry(nod*2,val);
return querry(nod*2+1,val-arb[nod*2]);
}
int main()
{cin>>n;
for(i=1;i<=n;i++)
{cin>>v[i];
update(1,1,n,i,1);
}
for(i=n;i>=1;i--)
{int poznou = querry(1,v[i]);
update(1,1,n,poznou,0);
rsp[poznou]=i;
}
for(i=1;i<=n;i++)
cout<<rsp[i]<<'\n';
return 0;
}