Cod sursa(job #2427574)

Utilizator PrekzursilAndrei Visalon Prekzursil Data 1 iunie 2019 00:03:08
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.77 kb
#include <fstream>
using namespace std;
ifstream cin ("elmaj.in");
ofstream cout ("elmaj.out");
const int MAX = 1e6 + 14;
int v [MAX];
int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; ++ i)
        cin >> v [i];
    int candidate = v [1];
    int chances = 1;
    for (int i = 2; i <= n; ++ i)
    {
        if (v [i] == candidate)
            chances += 1;
        else
        {
            chances -= 1;
            chances = max (chances, 0);
            if (chances == 0)
                candidate = v [i];
        }
    }
    int ap = 0;
    for (int i = 1; i <= n; ++ i)
        if (v [i] == candidate)
            ap += 1;
    if (ap >= n/2 + 1)
        cout << candidate << " " << ap << '\n';
    else cout << -1;
    return 0;
}