Pagini recente » Cod sursa (job #355430) | Cod sursa (job #819129) | Cod sursa (job #1370529) | Cod sursa (job #1071269) | Cod sursa (job #540071)
Cod sursa(job #540071)
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
#define maxn 30005
int i,N,poz;
int v[maxn],A[4*maxn],C[maxn];
void citire()
{
fin >> N;
for(i=1;i<=N;i++)
fin >> v[i];
}
void init(int k, int st, int dr)
{
if(st==dr)
{
A[k]=1;
return;
}
int m=(st+dr)/2;
init(2*k,st,m);
init(2*k+1,m+1,dr);
A[k]=A[2*k]+A[2*k+1];
}
void query(int k, int st, int dr,int val)
{
if(st==dr)
{
poz=st;
A[k]=0;
return;
}
int m=(st+dr)/2;
if(val<=A[2*k]) query(2*k,st,m,val);
else query(2*k+1,m+1,dr,val-A[2*k]);
A[k]=A[2*k]+A[2*k+1];
}
int main()
{
citire();
init(1,1,N);
for(i=N;i;i--)
{
query(1,1,N,v[i]);
C[poz]=i;
}
for(i=1;i<=N;i++)
fout << C[i] << '\n';
}