Cod sursa(job #2923623)

Utilizator PopaMihaimihai popa PopaMihai Data 16 septembrie 2022 20:59:03
Problema Elementul majoritar Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin ("elmaj.in");
ofstream fout ("elmaj.out");

const int NMAX = 1e6 + 3;

int N;
vector < int > v;

int vinit[NMAX];

bool op(int &cnt)
{
    if(v.empty() || cnt < 2)
        return false;

    if(v[cnt] != v[cnt - 1]) {
        v.erase(v.begin() + cnt - 1, v.begin() + cnt);
        cnt -= 2;
        return true;
    }
    return false;
}

int main()
{
    fin >> N;
    for(int i = 1; i <= N; ++i) {
        fin >> vinit[i];
        v.push_back(vinit[i]);
    }

    int cnt = 1;
    for(;;)
        if(!op(++cnt))
            break;

    if(v.size() == 0) {
        fout << "-1\n";
        return 0;
    }

    int maj = v[0];

    int freq = 0;
    for(int i = 1; i <= N; ++i)
        if(vinit[i] == maj)
            ++freq;

    if(freq < N / 2 + 1) {
        fout << "-1\n";
        return 0;
    }

    fout << maj << ' ' << freq << '\n';

    return 0;
}