Cod sursa(job #2021318)

Utilizator ifrimencoAlexandru Ifrimenco ifrimenco Data 13 septembrie 2017 11:15:56
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <iostream>
using namespace std;

#define NMAX 1000005
ifstream f("elmaj.in");
ofstream g("elmaj.out");

int n, v[NMAX];

void citire() {
    f >> n;
    for (int i = 1; i <= n; ++i) f >> v[i];
}

void rezolvare() {
    int nr = 0, cand = -1;
    for (int i = 1; i <= n; ++i)
        if (nr == 0) cand = v[i], nr = 1;
        else if (v[i] == cand) nr++;
        else nr--;


    if (cand < 1) g << "-1\n";
        else {
            nr = 0;
            for (int i = 1; i <= n; ++i)
                if (v[i] == cand) ++nr;
            if (nr > n / 2) g << cand << " " << nr << "\n";
            else g << "-1\n";
        }
}
int main()
{
    citire();
    rezolvare();
    return 0;
}