Cod sursa(job #2206991)

Utilizator ianiIani Biro iani Data 24 mai 2018 18:11:23
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>

using namespace std;

int a[1000001];

ofstream fout ("elmaj.out");

void mooreMajority(int n, int a[])
{
    int cand = -1, k = 0;
    for (int i = 0; i < n; i++)
    {
        if (k == 0)
        {
            cand = a[i];
            k = 1;
        }
        else if (a[i] == cand)
        {
            k++;
        }
        else
            k--;
    }
    if (cand < 0)
        fout<<cand<<'\n';
    int nr = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] == cand)
            nr++;
    }
    if (nr > n / 2)
        fout<<cand<<' '<<nr<<'\n';
    else
        fout<<"-1\n";
}

int main()
{
    ifstream fin ("elmaj.in");
    int n;
    fin>>n;
    for (int i=0; i<n; i++)
        fin>>a[i];
    mooreMajority(n,a);
    return 0;
}