Cod sursa(job #650769)

Utilizator FIIDutcaDutca Bogdan Andrei FIIDutca Data 18 decembrie 2011 22:06:45
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>
void QSort(int a[],int st,int dr)
{
	int temp,min,max,mijl;
	mijl = a[st+(dr-st)/2]; 
	min = st; max = dr;
	do
	{
		while(a[min] < mijl) 
			min++;
		while(a[max] > mijl) 
			max--;
		if(min <= max) 
		{
			temp = a[min];
			a[min++] = a[max];
			a[max--] = temp;
		}
	}while(min <= max); 
	if(st < max) QSort(a,st,max); 
	if(dr > min) QSort(a,min,dr); 
}
int main()
{
	int i,n,k,nr, a[1000000];
	FILE *f,*g;
	f=fopen("elmaj.in","r");
	g=fopen("elmaj.out","w");
	fscanf(f,"%d",&n);
	for(i=0;i<n;i++)
		fscanf(f,"%d",&a[i]);
	QSort(a,0,n-1);
	k=n/2;i=k-1;nr=1;
	while(i>=0 && a[i]==a[k])
	{
		i--;
		nr++;
	}
	i=k+1;
	while(i<n && a[i]==a[k])
	{
		i++;
		nr++;
	}
	if (nr>=n/2+1)
		fprintf(g,"%d %d",a[k],nr);
	else
		fprintf(g,"-1");
	fclose(f);
	fclose(g);
	return 0;
}