Cod sursa(job #961969)

Utilizator Stefanescu_MihaiStefanescu Mihai-Nicolae Stefanescu_Mihai Data 13 iunie 2013 12:55:16
Problema Elementul majoritar Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
using namespace std; 
int v[1000005]; 
void qsort(int v[], int lo, int hi) 
{    
	int i=lo,j=hi,t,pivot=v[lo+(hi-lo)/2];    
	while (i<=j)  
		{        
			while (pivot>v[i])         
				++i;    
			while (pivot<v[j])       
				--j;      
			if (i<=j)    
			{        
				t=v[i];      
				v[i]=v[j];  
				v[j]=t;      
				++i;        
				--j;     				
			}     
	}    
	if (i<hi)        
		qsort(v,i,hi); 
    if (lo<j)        
		qsort(v,lo,j); 
} 
int main() 
{    
	int i,n,y=1;   
	freopen("elmaj.in","r",stdin);   
	freopen("elmaj.out","w",stdout);  
	scanf("%d\n",&n);    
	for (i=1;i<=n;++i)    
		scanf("%d ",&v[i]);  
	qsort(v,1,n);  
	for (i=1;i<=n;++i)  
	{             
		if (v[i]==v[i+1])        
			++y;    
		else		
			if (y>=n/2)         
			{             
			printf("%d %d\n",v[i],y);           
			return 0;         
			}         
	}     
	printf("-1\n");     
	return 0; 
}