Cod sursa(job #974176)

Utilizator horia43Stancu horia43 Data 16 iulie 2013 16:28:24
Problema Elementul majoritar Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<stdio.h>
FILE * Fin=fopen("elmaj.in","r"), *Fout=fopen("elmaj.out","w");
void quicksort( int a[], int stanga, int dreapta );
int a[1000001];
int main ()
{
	int c1,y,x,n,i,max,c=0;
	fscanf(Fin,"%d",&n);
	for(i=0;i<n;++i)
		fscanf(Fin,"%d",&a[i]);
	quicksort(a,0,n-1);
	max=n/2+1;
	x=a[0];c=1;
	for(i=1;i<n;++i)
	{
		if(a[i]==x)
			c++;
		else
		{
			x=a[i];
			c=1;
		}
		if(c>=max)
		{
			y=x;
			c1=c;
		}
	}
	fprintf(Fout,"%d %d",y,c1);
	fclose(Fin); fclose(Fout);
	return 0;
}
void quicksort( int a[], int stanga, int dreapta )
{
	int i=stanga , j=dreapta ;
	int aux;
	int pivot=a[(stanga+dreapta)/2];
	while(i<=j)
	{
		while(a[i]<pivot)
			++i;
		while(a[j]>pivot)
			--j;
		if(i<=j)
		{
			aux=a[i];
			a[i]=a[j];
			a[j]=aux;
			i++;
			j--;
		}
	}
	if(stanga<j)
		quicksort(a,stanga, j);
	if(dreapta>i)
		quicksort(a,i,dreapta);
}