Pagini recente » Cod sursa (job #1665410) | Cod sursa (job #451559) | Cod sursa (job #2349168) | Cod sursa (job #2166665) | Cod sursa (job #2954662)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#define nmax 30005
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n;
int a[nmax];
int rasp[nmax];
int arbs[4*nmax];
int arbd[4*nmax];
void pune(int nod,int st,int dr,int pos,int val)
{
if(st==dr)
{
rasp[pos]=val;
arbs[nod]=1;
arbd[nod]=1;
return;
}
int mid=(st+dr)/2;
if(nod==1)
{
if(pos+arbd[nod]>mid)
pos+=arbd[nod];
else pos+=arbs[nod];
}
else if(nod&1 && arbs[nod]==1)
pos+=arbs[nod];
if(pos<=mid)
pune(2*nod,st,mid,pos,val);
else if(pos>mid)
pune(2*nod+1,mid+1,dr,pos,val);
arbs[nod]=arbs[2*nod];
if(nod!=1)
arbd[nod]=arbd[2*nod]+arbd[2*nod+1];
else if(nod==1)
arbd[nod]=arbd[2*nod];
}
void citire()
{
fin>>n;
for(int i=1;i<=n;++i)
fin>>a[i];
for(int i=n;i>=1;i--)
pune(1,1,n,a[i],i);
for(int i=1;i<=n;++i)
fout<<rasp[i]<<"\n";
}
int main()
{citire();
return 0;
}