Cod sursa(job #763937)

Utilizator test666013Testez test666013 Data 3 iulie 2012 16:03:04
Problema Elementul majoritar Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 666013

vector<int>v[MAX];
int n;

int elmaj(){
    for(int i=0;i<MAX;i++)
    if(v[i].size()>n/2)
    {
        sort(v[i].begin(),v[i].end());

        int nr = 1 ,c = v[i][0] ,k = 1,l = v[i].size();
        for(int j=1;j < l;j++)
        {
            if(v[i][j] == v[i][j-1])nr++; else nr = 1;
            if(nr > k)
            {
                k = nr;
                c = v[i][j-1];
            }
        }
        if(k > n/2)
        {
            printf("%d ",c);
            return k;
        }
    }
    return -1;
}

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);
            v[x%MAX].push_back(x);
        }
        printf("%d\n",elmaj());
    return 0;
}