Cod sursa(job #1120554)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 25 februarie 2014 08:23:48
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
/// Craciun Catalin
///  Elmaj
#include <fstream>
#include <iostream>

#define NMax 1000005

using namespace std;

ifstream f("elmaj.in");
ofstream g("elmaj.out");

long n;
long A[NMax];

long elmaj()
{
    int cand=0, k=-1;
    for (long i=1;i<=n;i++)
    {
        if (cand==0)
        {
            k=A[i];
            cand++;
        }
        else if (k==A[i])
            cand++;
        else if (k!=A[i])
            cand--;
    }

    if (k==-1)
        return 0;

    long nr=0;
    for (long i=1;i<=n;i++)
        if (A[i]==k)
            nr++;

    if (nr>=n/2+1)
        return k;
    else
        return -1;
}

void citire()
{
    f>>n;
    for (long i=1;i<=n;i++)
        f>>A[i];
    f.close();
}

int main()
{
    citire();

    g<<elmaj()<<'\n';
    g.close();

    return 0;
}