Pagini recente » Cod sursa (job #411874) | Monitorul de evaluare | Cod sursa (job #1243614) | Cod sursa (job #2023593) | Cod sursa (job #650156)
Cod sursa(job #650156)
#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 initializare(int k, int st, int dr)
{
if(st==dr)
{
A[k]=1;
return;
}
int m=(st+dr)/2;
initializare(2*k,st,m);
initializare(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();
initializare(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';
fin.close();
fout.close();
return 0;
}