Cod sursa(job #1767195)

Utilizator caprariuapCaprariu Alin-Paul caprariuap Data 28 septembrie 2016 19:52:00
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <cstdio>
#include <fstream>
#include <map>

using namespace std;

map<int,int> m;
int n,x,a[1000010],nr,aux;

int majoritate()
{
    int k=0;
    for (int i=0; i<n; i++)
    {
        if (!k)
        {
            aux=a[i];
            k=1;
        }
        else if (a[i]==aux)
            k++;
        else
            k--;
    }
    if (aux<0)
        return aux;
    for (int i=0; i<n; i++)
    {
        if (a[i] == aux)
            nr++;
    }
    if (nr>n/2)
        return nr;
    else
        return -1;
}

int main()
{
    freopen("elmaj.in","r",stdin);
    freopen("elmaj.out","w",stdout);
    scanf("%d",&n);
    for (int i=0; i<n; i++)
        scanf("%d",&a[i]);
    nr=majoritate();
    printf("%d %d",aux,majoritate);
    return 0;
}