Cod sursa(job #581714)

Utilizator AnteusPatrascoiu Mihai Anteus Data 14 aprilie 2011 15:29:24
Problema Schi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream.h>
ifstream fin("schi.in");
ofstream fout("schi.out");
const int r=30001;
int n,v[4*r],i,x;
int s[r],sol[r];

void update (int poz, int ls, int ld) {
int h;
	if (ls==ld)
	{
		v[poz]=1;
		return;
	}
	
	h=(ls+ld)/2;
	update(2*poz, ls, h);
	update(2*poz+1, h+1, ld);
	v[poz]=v[2*poz]+v[2*poz+1];
}

void query(int poz, int ls, int ld, int x) {
int h;
	if (ls==ld)
	{
		sol[ls]=i;
		v[poz]=0;
		return;
	}
	
	h=(ls+ld)/2;
	if (v[2*poz]>=x)	query(2*poz, ls, h, x);
	else				query(2*poz+1, h+1, ld, x-v[2*poz]);
	
	v[poz]=v[2*poz]+v[2*poz+1];
}

int main() {
fin>>n;
update(1,1,n);

for (i=1;i<=n;i++)
	fin>>s[i];

for (i=n;i>=1;i--)
	query(1,1,n,s[i]);

for (i=1;i<=n;i++)
	fout<<sol[i]<<"\n";

return 0;
}