Cod sursa(job #996045)

Utilizator cosmo0093Raduta Cosmin cosmo0093 Data 10 septembrie 2013 21:10:52
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>

void mooreMajority(long long *A, int length, std::ostream& out);

int main()
{
    std::ifstream in("elmaj.in");
    std::ofstream out("elmaj.out");
    int length;
    in >> length;
    long long *Arr = new long long[length];
    for(int i = 0; i < length; i++)
        in >> Arr[i];
    mooreMajority(Arr, length, out);
    return 0;
}

void mooreMajority(long long *A, int length, std::ostream& out)
{
    long long c;
    int check = 0;
    for(int i = 0; i < length; i++)
    {
        if(check == 0)
        {
            check = 1;
            c = A[i];
        }
        else if(A[i] == c) check++;
        else check--;
    }
    check = 0;
    for(int i = 0; i < length; i++)
        if(A[i] == c) check++;
    if(check > length / 2)
        out << c << ' ' << check;
    else out << -1;
}