Cod sursa(job #1108355)

Utilizator RathebaSerbanescu Andrei Victor Ratheba Data 15 februarie 2014 16:47:59
Problema Elementul majoritar Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define MAX 1000005

int v[MAX],n,fr[MAX],i,maxim=0,sol,nr=0;
bool comp(int a, int b)
{
    return a<b;
}

int main()
{
    freopen("elmaj.in","r",stdin);
    freopen("elmaj.out","w",stdout);
    scanf("%d",&n);
    for(i=1; i<=n; i++)
        scanf("%d",&v[i]);
    sort(v+1,v+n+1,comp);
    for(i=1; i<=n; i++)
    {
        if(v[i] != v[i-1])
            nr++;
        fr[nr]++;
    }
    for(i=1; i<=n; i++)
        if(fr[i] >= n/2+1)
            break;
    nr=0;
    for(int j=1; j<=n; j++)
    {
        if(v[j] != v[j-1])
            nr++;
        if(nr == i){ sol=v[j]; break;}
    }
    printf("%d %d",sol,fr[i]);
    return 0;
}