Cod sursa(job #1394960)

Utilizator eusebiu-andreiEusebiu-Andrei Gagea eusebiu-andrei Data 20 martie 2015 21:22:51
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream fin("elmaj.in");
ofstream fout("elmaj.out");
int n,a[1000001],nr;
int mooreMajority()
{
    int cand = -1, k = 0, i;
    for (i = 0; i < n; i++)
    {
        if (k == 0)
        {
            cand = a[i];
            k = 1;
        }
        else if (a[i] == cand)
            k++;
        else
            k--;
    }
    if (cand < 0)
        return cand;
    for (i = 0; i < n; i++)
    {
        if (a[i] == cand)
            nr++;
    }
    if (nr > n / 2)
        return cand;
    else
        return -1;
}
int main()
{
    int i;
    fin>>n;
    for(i=0;i<n;i++)
        fin>>a[i];
    fout<<mooreMajority()<<" ";
    if(nr>n/2)
        fout<<nr<<endl;
    return 0;
}