Cod sursa(job #1040399)

Utilizator NitaMihaitavoidcube NitaMihaita Data 24 noiembrie 2013 14:55:53
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<iostream>
#include<fstream>
#define numaru 1000001
using namespace std;
ifstream f("elmaj.in");
ofstream g("elmaj.out");
int v[numaru],z[numaru];
void Sort(int s,int d)
{
    if(s==d)return ;
    int i=s,m=(s+d)>>1,j=m+1,k=s;
    Sort(s,m); Sort(m+1,d);
    for(;i<=m || j<=d;)
        if(j>d || (i<=m && v[i]<v[j]))
        {
            z[k++]=v[i++];
        }
        else
        {
            z[k++]=v[j++];
        }
    for(k=s;k<=d;v[k]=z[k++]);
}
int main()
{
    int i,n,nr=1,a,nrmax=0;
    f>>n;
    for(i=1;i<=n;++i) f>>v[i];
    Sort(1,n);
    for(i=1;i<n;++i)
            if(v[i]==v[i+1])++nr;
            else { if(nr>nrmax) { nrmax=nr;  a=v[i]; } nr=1; }
    if(nrmax>=n/2+1)g<<a<<" "<<nrmax<<"\n";
    else g<<"-1\n";
    f.close();
    g.close();
    return 0;
}