Pagini recente » Cod sursa (job #2180398) | Cod sursa (job #2540031) | Cod sursa (job #579851) | Cod sursa (job #3166468) | Cod sursa (job #1556279)
#include <fstream>
using namespace std;
#define NMax 30005
#define AMax NMax*4
ifstream f("schi.in");
ofstream g("schi.out");
int n;
int v[NMax],poz[NMax];
int A[AMax];
void arb_search(int nr,int val,int nod,int st,int dr)
{
A[nod]++;
if(st==dr)
{
poz[st]=nr;
return;
}
int mij=(st+dr)/2;
int fiu1=nod*2,fiu2=nod*2+1;
int cap=mij-st+1;;
if(cap-A[fiu1]>=val) arb_search(nr,val,fiu1,st,mij);
else
{
val-=cap-A[fiu1];
arb_search(nr,val,fiu2,mij+1,dr);
}
}
int main()
{
int i;
f>>n;
for(i=1;i<=n;i++) f>>v[i];
for(i=n;i>=1;i--) arb_search(i,v[i],1,1,n);
for(i=1;i<=n;i++) g<<poz[i]<<"\n";
f.close();
g.close();
return 0;
}