Cod sursa(job #1973974)

Utilizator B_RazvanBaboiu Razvan B_Razvan Data 26 aprilie 2017 15:42:00
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#define NMAX 1000005

using namespace std;

int n, nrAp, elMaj, a[NMAX];


void read()
{
    scanf("%d", &n);
    for(int i=1; i<=n; ++i)
        scanf("%d", &a[i]);
}

bool elementMajoritar()
{
    int k=0, elMajAux=-1;
    for(int i=1; i<=n; ++i)
        if(k==0)
        {
            elMajAux=a[i];
            k=1;
        }
        else if(elMajAux==a[i])
            k++;
        else
            k--;
    if(elMajAux < 0)
        return false;
    for(int i=1; i<=n; ++i)
        if(a[i]==elMajAux)
            nrAp++;
    if(nrAp>n/2)
    {
        elMaj=elMajAux;
        return true;
    }
    return false;
}

int main()
{
    freopen("elmaj.in", "r", stdin);
    freopen("elmaj.out", "w", stdout);
    read();
    if(elementMajoritar())
        printf("%d %d", elMaj, nrAp);
    else
        printf("-1");
    return 0;
}