Cod sursa(job #419341)

Utilizator feelshiftFeelshift feelshift Data 17 martie 2010 12:25:51
Problema Schi Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <cstdio>
int n,x,i,k,max,vector[2][30001];

FILE * in = fopen("schi.in","rt");
FILE * out = fopen("schi.out","wt");

int found();
//void quicksort(int array[][30001],int left,int right);

int main()
{
	fscanf(in,"%d",&n);
	
	for(i=1;i<=n;i++)
	{
		fscanf(in,"%d",&x);
		vector[1][i] = i;
		
		//if(!found)		// daca nu exista cineva pe pozitia x in clasament
		//	vector[0][i] = x;
		//else
			for(k=1;k<=i;k++)
			{
				if(vector[0][k] >= x)	// toate valorile mai mari sau egale cu x
					vector[0][k] = vector[0][k] + 1;	// le retrogradeaza in clasament
				vector[0][i] = x;
			}
		
		/*int e;
		for(e=1;e<=n;e++)
			printf("%d ",vector[0][e]);
		printf("\n");*/
	}
	
	//quicksort(vector,1,n);
	
	for(i=1;i<=n;i++)
		vector[1][vector[0][i]] = i;
	
	for(i=1;i<=n;i++)
		fprintf(out,"%d\n",vector[1][i]);
	
//	for(i=1;i<=n;i++)
//		printf("%d ",vector[i]);
	
	return (0);
}

/*int found()
{
	int e;
	
	for(e=1;e<=i;e++)
		if(vector[0][e] == x)
			return 1;
	
	return 0;
}*/

/*void quicksort(int array[][30001],int left,int right)
{
	int i,k,v,tmp1,tmp2;
	
	if(left < right)
	{
		i = left - 1;
		k = right;
		v = array[0][right];
		
		for(;;)
		{
			while(array[0][++i] < v);
			while(array[0][--k] > v);
			
			if(i >= k)
				break;
			
			tmp1 = array[0][i];
			tmp2 = array[1][i];
			array[0][i] = array[0][k];
			array[1][i] = array[1][k];
			array[0][k] = tmp1;
			array[1][k] = tmp2;
		}
		
		tmp1 = array[0][i];
		tmp2 = array[1][i];
		array[0][i] = array[0][right];
		array[1][i] = array[1][right];
		array[0][right] = tmp1;
		array[1][right] = tmp2;
		
		quicksort(array,left,i-1);
		quicksort(array,i+1,right);
	}
}*/