Pagini recente » Cod sursa (job #109900) | Cod sursa (job #2572276) | Cod sursa (job #1164330) | Cod sursa (job #3132590) | Cod sursa (job #2783392)
#include <fstream>
using namespace std;
int aint[130005],n,p=1,v[30005],s[30005],cnt=0;
int ver(int cel, int aux, int loc)
{
int c=cnt;
while(c>0)
{
if(aint[cel*2]+aux>=loc)
cel*=2;
else if(aint[cel*2+1]+aux+aint[cel*2]>=loc)
{
aux+=aint[cel*2];
cel*=2;
cel++;
}
c--;
}
return cel;
}
void up(int i)
{
aint[i]=0;
while(i>1)
{
i/=2;
aint[i]--;
}
}
int main()
{
ifstream cin("schi.in");
ofstream cout("schi.out");
int c,a,b;
cin>>n;
while(p<n)
{
p*=2;
cnt++;
}
for(int i=1;i<=n;i++)
cin>>v[i];
for(int i=p;i<=p+n-1;i++)
aint[i]=1;
for(int i=p-1;i>=1;i--)
{
aint[i]=aint[i*2]+aint[i*2+1];
}
for(int i=n;i>0;i--)
{
s[ver(1,0,v[i])-p+1]=i;
up(ver(1, 0, v[i]));
}
for(int i=1;i<=n;i++)
{
cout<<s[i]<<'\n';
}
return 0;
}