Cod sursa(job #1881350)

Utilizator ReeeBontea Mihai Reee Data 16 februarie 2017 13:31:56
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#define NMAX 1000004

using namespace std;

ofstream fout("elmaj.out");

int N, v[NMAX];

void Citire()
{
    ifstream fin("elmaj.in");
    fin >> N;
    for ( int i = 1 ; i <= N ; ++i )
        fin >> v[i];
    fin.close();
}

void Solve()
{
    int candidat = -1, k = 0;
    for ( int i = 1 ; i <= N ; ++i )
    {
        if ( !k )
        {
            candidat = v[i];
            k = 1;
        }
        else
            if ( v[i] == candidat )
                ++k;
            else
                --k;
    }
    int nr = 0;
    for ( int i = 1 ; i <= N ; ++i )
        if (v[i] == candidat)
            ++nr;
    if (nr > N / 2)
        fout << candidat << " " << nr;
    else
        fout << -1;
}

int main()
{
    Citire();
    Solve();
    return 0;
}