Pagini recente » Cod sursa (job #1511736) | Cod sursa (job #1514535) | Cod sursa (job #735029) | Cod sursa (job #1577719) | Cod sursa (job #2604580)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
const int nmax=30005;
int n,v[nmax],aib[nmax],sol[nmax]/*,sum[nmax]*/;
void update(int poz,int val)
{
for(;poz<=n;poz+= poz & -poz)
aib[poz]+=val;
}
void read()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
//sum[i]=sum[i-1]+1;
update(i,1);
}
}
void solve()
{
for(int i=n;i>=1;i--)
{
int x=v[i],idx=0,p=1<<20;
/*for(int i=1;i<=n;i++)
fout<<sum[i]<<" ";
fout<<"\n";*/
for(;p>0;p/=2)
if(idx+p<=n)
if(aib[idx+p]<x)
{
idx+=p;
x-=aib[idx];
}
//fout<<idx+1<<"\n";
sol[idx+1]=i;
update(idx+1,-1);
/*for(int i=idx+1;i<=n;i++)
sum[i]--;*/
}
for(int i=1;i<=n;i++)
fout<<sol[i]<<"\n";
}
int main()
{
read();
solve();
return 0;
}