Pagini recente » Cod sursa (job #261195) | Cod sursa (job #2000590) | Cod sursa (job #2267470) | Cod sursa (job #2247627) | Cod sursa (job #660320)
Cod sursa(job #660320)
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int i,N,poz;
int v[3005],A[13000],C[3005];
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;
}