Cod sursa(job #2783392)

Utilizator alexdmnDamian Alexandru alexdmn Data 14 octombrie 2021 13:06:41
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#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;
}