Pagini recente » Cod sursa (job #351995) | Cod sursa (job #3170009) | Cod sursa (job #831416) | Cod sursa (job #1928712) | Cod sursa (job #1076873)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("schi.in");
ofstream out("schi.out");
const int N=100001;
int v[N],t[N],a[N];
int main()
{
int st,dr,val,n,m;
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
for(int i=n;i>=1;i--)
{
st=1;
dr=n;
val=1;
++t[val];
while(st!=dr)
{
m=(st+dr)/2;
if(m-st+1-t[val*2]>=v[i])
{
dr=m;
val*=2;
++t[val];
}
else
{
v[i]-=m-st+1-t[val*2];
st=m+1;
val=val*2+1;
++t[val];
}
}
a[st]=i;
}
for(int i=1;i<=n;i++)
out<<a[i]<<'\n';
return 0;
}