Cod sursa(job #3342956)

Utilizator mariusn01Marius Nicoli mariusn01 Data 26 februarie 2026 10:45:19
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>

using namespace std;
int v[1000001];
int n, x, i, majoritar, aparitii, nr;

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

    fin>>n;

    fin>>v[1];
    majoritar = x;
    aparitii = 1;

    /// cat timp aparitii este pozitiv inseamna ca majoritar apare de mai multe ori decat toate celelalte la un loc
    for (i=2;i<=n;i++) {
        fin>>v[i];
        if (v[i] == majoritar)
            aparitii++;
        else {
            aparitii--;
            if (aparitii == 0) {
                majoritar = v[i];
                aparitii = 1;
            }
        }
    }

    /// algoritmul de mai sus prezice un majoritar
    /// daca e sa fie vreun majoritar acela este chiar cel ramas in variabila "majoritar"
    /// si daca nu exista tot ramane ceva in variabila deci trebuie ca cel scos de algoritm sa il verificam efectiv daca e majoritar


    for (i=1;i<=n;i++)
        if (v[i] == majoritar)
            nr++;
    if (nr >= n/2+1) {
        fout<<majoritar<<" "<<nr<<"\n";
    } else
        fout<<-1;

    return 0;
}