Cod sursa(job #2882761)

Utilizator BarbuDragosBarbu Dragos BarbuDragos Data 31 martie 2022 19:34:31
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;
//apare de cel putin n/2+1
void read_input(vector<size_t> &v) {
    ifstream in("elmaj.in");

    size_t n;
    in >> n;

    for (size_t i = 0; i < n; i++) {
        size_t tmp;
        in >> tmp;
        v.push_back(tmp);
    }
    in.close();
}

pair<size_t, size_t> solve(vector<size_t> &v) {
    sort(v.begin(), v.end());
    unordered_map<size_t, size_t> ap;
    for (size_t i = 0; i < v.size(); i++) {
        ap[v[i]]++;
    }

    size_t trigger = v.size() / 2 + 1;
    for (auto elem : ap) {
        if (elem.second >= trigger) {
            return elem;
        }
    }
    return make_pair(-1, -1);
}

void print_output(pair<size_t, size_t> res) {
    ofstream out("elmaj.out");

    if (res.first == -1 && res.second == -1) {
        out << -1;
        return;
    }
    out << res.first << " " << res.second;
}

int main() {
    vector<size_t> v;
    read_input(v);
    print_output(solve(v));
    return 0;
}