Pagini recente » Cod sursa (job #2641509) | Cod sursa (job #665216) | Cod sursa (job #658713) | Cod sursa (job #1239001) | Cod sursa (job #1017333)
#include<fstream>
#define MAXN 1<<16
using namespace std;
int s[MAXN],n,v[30001],poz,sol[30001],val;
ifstream fin("schi.in");
ofstream fout("schi.out");
void querry(int nod,int st,int dr)
{
if(st==dr)
{
poz=st;
s[nod]=0;
return;
}
int m=(st+dr)/2;
if(s[2*nod]<val)
{
val-=s[2*nod];
querry(2*nod+1,m+1,dr);
}
else
{
querry(2*nod,st,m);
}
s[nod]--;
}
void init(int nod,int st,int dr)
{
s[nod]=dr-st+1;
if(st<dr)
{
init(2*nod,st,(st+dr)/2);
init(2*nod+1,(st+dr)/2+1,dr);
}
}
int main()
{
fin>>n;
init(1,1,n);
for(int i=1;i<=n;i++)
{
fin>>v[i];
}
for(int i=n;i>=1;i--)
{
val=v[i];
querry(1,1,n);
sol[poz]=i;
}
for(int i=1;i<=n;i++)
{
fout<<sol[i]<<"\n";
}
return 0;
}