Cod sursa(job #35756)

Utilizator surcauvsurcau vasile surcauv Data 22 martie 2007 14:30:21
Problema Schi Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
# include <stdio.h>

# define  _fin  "schi.in"
# define  _fout "schi.out"

# define  maxn  30003


int arb[maxn], n, a[maxn], ord[maxn];

void update(int i)
{
	int ii;
	for (ii=i; ii<=n; ii += ii & (-ii)) arb[ii]++;
}

int  query(int i)
{
	int ii, ret=0;
	for (ii=i; ii>0; ii &= ii-1) ret += arb[ ii ];
	return ret;
}

int main()
{
	freopen(_fin, "r", stdin);
	freopen(_fout,"w", stdout);
	int i, poz;

	for (scanf("%d", &n), i=1; i<=maxn; i++) scanf("%d", a+i);
	
	ord[ a[n] ] = n, update( a[n] );
	for (i=n-1; i>=1; i--)
	{
		poz = query( a[i] ) + a[i];
		while ( ord[poz] ) ++poz;
		ord[ poz ] = i;
		update( a[i] );
	}
	
	for (i=1; i<=n; i++) printf("%d\n", ord[i]);

	return 0;
}