Pagini recente » Cod sursa (job #1991129) | Cod sursa (job #2088845) | Cod sursa (job #1699580) | Cod sursa (job #723929) | Cod sursa (job #2010813)
#include <bits/stdc++.h>
#define Nmax 30001
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int v[Nmax];
int r[Nmax];
int arb[4*Nmax];
int poz,sol;
void update(const int &nod,const int &p,const int &q)
{
if(p==q)
arb[nod]=1;
else
{
int m=(p+q)/2;
if(poz<=m)
update(2*nod,p,m);
else update(2*nod+1,m+1,q);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
void querry(const int &nod,const int &p,const int &q,const int &val)
{
if(p==q)
{
sol=p;
arb[nod]=0;
}
else
{
int m=(p+q)/2;
if(val<=arb[2*nod])
querry(2*nod,p,m,val);
else
querry(2*nod+1,m+1,q,val-arb[2*nod]);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
int main()
{
int n,i;
f>>n;
for(i=1;i<=n;i++)
{
f>>v[i];
poz=i;
update(1,1,n);
}
for(i=n;i;i--)
{
querry(1,1,n,v[i]);
r[sol]=i;
}
for(i=1;i<=n;i++)
g<<r[i]<<'\n';
return 0;
}