Cod sursa(job #3339516)

Utilizator prodsevenStefan Albu prodseven Data 8 februarie 2026 12:29:10
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream cin("elmaj.in");
ofstream cout("elmaj.out");

int n;
vector<int> v;

int main() {
    cin >> n;
    v.assign(n, 0);
    int candidate = -1, uncancelled_elems = 0;
    for (int i = 0 ; i < n ; ++i) {
        cin >> v[i];
        if (uncancelled_elems == 0) { // Beginning or everybody until now has cancelled each other. That means we choose a new candidate.
            candidate = v[i];
            uncancelled_elems = 1;
        }
        else if (candidate == v[i]) uncancelled_elems++; // This element now waits to be cancelled
        else uncancelled_elems--; // This element cancels with one from the uncancelled ones.
    }
    // We check it's actually n / 2 + 1 times.
    int cnt = 0;
    for (int i = 0 ; i < n ; ++i) {
        if (v[i] == candidate) ++cnt;
    }
    if (cnt >= n / 2 + 1) cout << candidate << " " << cnt;
    else cout << -1;
    return 0;
}