Cod sursa(job #703355)

Utilizator ciuscatalincius catalin ciuscatalin Data 2 martie 2012 11:58:47
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
using namespace std;

ifstream cin("elmaj.in");
ofstream cout("elmaj.out");
unsigned long long n, a[1000001],b[1000001],  majoritar, sol, i;

void quickSort(unsigned long long arr[],unsigned long long left, unsigned long long right)
{
     long long i=left,j=right;
     long long tmp;
     long long pivot=arr[(left + right)/2];
     while (i<=j)
     {
           while(arr[i]<pivot)
           i++;
           while(arr[j]>pivot)
           j--;
           if (i<=j)
           {
                 tmp=arr[i];
                 arr[i]=arr[j];
                 arr[j]=tmp;
                 i++;
                 j--;
           }               
     }
     if(left<j)
     quickSort(arr,left,j);
     if(i<right)
     quickSort(arr,i,right);
}
int main()
{
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>a[i];
        b[a[i]]++;
    }
    quickSort(a, 1, n);
    if((n-1)/2<=b[a[(n-1)/2]])
    cout<<a[(n-1)/2]<<" "<<b[a[(n-1)/2]];
    else cout<<"-1";
    return 0;
}