Cod sursa(job #1756235)

Utilizator enedumitruene dumitru enedumitru Data 12 septembrie 2016 13:45:30
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
using namespace std;
ifstream f("elmaj.in"); ofstream g("elmaj.out");
int v[1000001];
int main()
{   int n;
    f>>n;
    for(int i=1;i<=n;++i) f>>v[i];
    int maj=v[1],nr=1;
    for(int i=2;i<=n;++i)
        if(v[i]==maj) nr++;// cita vreme avem maj incrementam numarul de maj gasite
    else
    {   nr--;                       // altfel decrementam numarul de maj
        if(nr<0)                    // daca am scazut sub zero alegem drept candidat
            {maj = v[i]; nr = 1;};  // elementul curent care apare o data
    }
    nr=0;       // verificare candidat la element majoritar
    for(int i=1;i<=n;++i)
        if(v[i]==maj) nr++;            // numaram de cit ori apare maj in vector
    if(nr>n/2)  g<<maj<<' '<<nr<<'\n'; // daca maj apare de mai mult de n/2 ori este majoritar
        else g<<"-1\n";
    g.close(); return 0;
}