Cod sursa(job #1526551)

Utilizator Vele_GeorgeVele George Vele_George Data 16 noiembrie 2015 20:57:50
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.94 kb
#include <iostream>
#include <fstream>
#define nmax 1000004
using namespace std;

int V[nmax], n, nr=0, pretendent;
long long candidatu_invingator()
{
    long long candidat; int k=0;
    for(int i=1; i<=n; i++)
    {
        if(k==0){
            candidat = V[i];
            k = 1;
        }else if (candidat==V[i]){
            k++; // ca la parantezare, mai avem unu de cuplat
        }else
            k--; // inseamna ca-s diferite si putem face o pereche->mai putini cu 1 de cuplat
    }
    return candidat;
}
int main()
{
    ifstream f("elmaj.in");
    ofstream g("elmaj.out");
    f >> n;
    for(int i=1; i<=n; i++)
    {
        f >> V[i];
    }
    pretendent = candidatu_invingator();
    for(int i=1; i<=n; i++)
    {
        if (V[i] == pretendent) nr++;
    }
    if (nr >= n/2+1){
        g << pretendent << " " << nr;
    }else{
        g << -1;
    }
    f.close();
    g.close();
    return 0;
}