Pagini recente » Cod sursa (job #1229911) | Borderou de evaluare (job #1797923) | Cod sursa (job #2160110) | Cod sursa (job #250176) | Cod sursa (job #568269)
Cod sursa(job #568269)
#include<fstream>
using namespace std;
ifstream in("schi.in");
ofstream out("schi.out");
int n,arb[120005],v[30005],x,reconstr[30005];
void mod(int nod,int p,int u)
{
int m;
if(p==u)
{
arb[nod]=1;
return;
}
m=(p+u)>>1;
mod(2*nod,p,m);
mod(2*nod+1,m+1,u);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void query(int nod,int p,int u,int poz)
{
int m;
if(p==u)
{
x=p;
arb[nod]=0;
return ;
}
m=(p+u)>>1;
if(arb[2*nod]>=poz)
query(nod*2,p,m,poz);
else
query(nod*2+1,m+1,u,poz-arb[2*nod]);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void rez()
{
in>>n;
mod(1,1,n);
for(int i=1;i<=n;++i)
in>>v[i];
for(int i=n;i;--i)
{
query(1,1,n,v[i]);
reconstr[x]=i;
}
for(int i=1;i<=n;++i)
out<<reconstr[i]<<"\n";
}
int main()
{
rez();
return 0;
}