Cod sursa(job #1069047)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 29 decembrie 2013 12:34:26
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;

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

const int NMAX = 1000002;

unsigned int V[NMAX];
unsigned int N;

pair<unsigned int,unsigned int> elMaj(){
    unsigned int counter = 0, value;
    unsigned int i;

    for(i = 0; i < N; i++){
        if(counter == 0){
            value = V[i];
            counter = 1;
        }
        else if(V[i] == value){
            counter ++;
        }
        else {
            counter--;
        }
    }

    for(i = 0, counter = 0; i < N; i++){
        if(V[i] == value)
            counter ++;
    }

    if(counter > N/2){
        return make_pair(value,counter);
    }
    else return make_pair(0,0);
}

int main()
{
    in >> N;

    for(unsigned int i = 0; i < N; i++)
        in >> V[i];

    pair<unsigned int, unsigned int> elmaj = elMaj();

    if(elmaj.second)
        out << elmaj.first << ' ' << elmaj.second << '\n';
    else out << "-1\n";
    return 0;
}