Cod sursa(job #856878)

Utilizator aladinaladin aladinn aladin Data 17 ianuarie 2013 01:14:06
Problema Schi Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
using namespace std;

ifstream in("schi.in");
ofstream out("schi.out");

#define lsb(x) x&(-x)
int v[30005],aib[30005],n,v2[30005];

inline void update(int poz)
{
	for (;poz<=n;poz+=lsb(poz))
		++aib[poz];
}


inline int getpoz(int poz)
{
	int i,step,sum=0;
	for (i=0,step=1<<16;step;step>>=1)
		if ((i+step<=n) && (i+step-aib[i+step]-sum<poz))
			sum+=aib[i+step],i+=step;
	return i+1;
}	

int main()
{
	int i,j;
	
	in>>n;
	for (i=1;i<=n;++i) in>>v2[i];
	
	for (i=n;i>0;--i)
	{
		j=getpoz(v2[i]);
		//while 4(v[j]) ++j;
		v[j]=i;
		update(j);
	}
for (i=1;i<=n;++i)
out<<v[i]<<"\n";
return 0;
}