Pagini recente » Cod sursa (job #797808) | Cod sursa (job #1338914) | Cod sursa (job #588420) | Cod sursa (job #1372003) | Cod sursa (job #1074498)
#include<fstream>
#include<cstdio>
#define inf 1000000001
using namespace std;
int t[100001],v[30001],a[30001];
ifstream in("schi.in");
int main()
{
freopen("schi.out","w",stdout);
int i,pozx,pozy,val,n,m;
in>>n;
for(i=1;i<=n;++i)
in>>v[i];
for(i=n;i>=1;--i)
{
pozx=1;
pozy=n;
val=1;
++t[val];
while(pozx!=pozy)
{
m=(pozx+pozy)/2;
if(m-pozx+1-t[val*2]>=v[i])
{
pozy=m;
val*=2;
++t[val];
}
else
{
v[i]=v[i]-(m-pozx+1-t[val*2]);
pozx=m+1;
val=val*2+1;
++t[val];
}
}
a[pozy]=i;
}
for(i=1;i<=n;++i)
printf("%d\n",a[i]);
return 0;
}