Cod sursa(job #785441)

Utilizator round1First Round round1 Data 9 septembrie 2012 00:35:13
Problema Elementul majoritar Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define Max 666013

vector<int>g[Max];
int n;

void rasp()
{
    int p,mx,nr;
    for(int i=0;i<Max;i++)
    if( g[i].size() > n/2 )
    {
        sort(g[i].begin(),g[i].end());
        p = g[i][0];
        mx = 1;
        nr = 1;
        for(int j=1;j<g[i].size();j++)
        {
            if( g[i][j] == g[i][j-1] )nr++; else nr = 0;
            if( nr > mx ){ p = g[i][j]; mx = nr; }
        }
    }
    if( nr > n/2 )
    {
        printf("%d %d\n",p,mx);
        return;
    }
    printf("-1\n");
}

int main()
{
    int x;
    freopen("elmaj.in","r",stdin);
    freopen("elmaj.out","w",stdout);


    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        g[x%Max].push_back(x);
    }
    rasp();

    return 0;
}