Cod sursa(job #3305320)

Utilizator SergiuS3003Sergiu Stancu Nicolae SergiuS3003 Data 31 iulie 2025 18:47:40
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f("elmaj.in");
ofstream g("elmaj.out");
const int NMAX = 1e6 + 1;
int v[NMAX];

int main()
{
    int n, cand = -1, nrVoturi = 0;
    f >> n;
    for (int i = 1; i <= n; i++)
    {
        f >> v[i];
        if (nrVoturi == 0)
        {
            ///avem un nou candidat
            cand = v[i];
            nrVoturi = 1;
        }
        else if (v[i] == cand)
        {
            nrVoturi++;
        }
        else
        {
            nrVoturi--;
        }
    }
    ///daca exista element majoritar, atunci voi aduna 1 de cel putin n/2 = 1ori
    /// deci suma totala va fi > 0. Adica majoritate => nrVoturi > 0
    if (nrVoturi == 0)
    {
        /// este clar ca nu am element majoritar
        g << -1;
        return 0;
    }
    int cnt = 0;
    for (int i = 1; i <= n; i++)
    {
        if (v[i] == cand)
        {
            cnt++;
        }
    }
    if (cnt >= n / 2 + 1)
    {
        g << cand << ' ' << cnt;
    }
    else
        g << -1;

    return 0;
}