Cod sursa(job #2070246)

Utilizator vladm98Munteanu Vlad vladm98 Data 19 noiembrie 2017 13:02:54
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
using namespace std;

int v[1000001];

void addToPretendents (int value, int &currentPretendent, int & noOfAparition)
{
	if (currentPretendent == value)
		++noOfAparition;
	else if (noOfAparition == 1)
		currentPretendent = value;
	else --noOfAparition;
}

int main()
{
    ifstream fin("elmaj.in");
    ofstream fout("elmaj.out");
    int n;
    int noOfAparition = 0;
    int pretendent = 0;
    fin >> n;
    for (int i = 1; i <= n; ++i)
    {
    	fin >> v[i];
    	addToPretendents (v[i], pretendent, noOfAparition);
    }
    noOfAparition = 0;
    for (int i = 1; i<=n; ++i)
    	noOfAparition += (v[i] == pretendent);
    if (noOfAparition >= n / 2 + 1)
    	fout << pretendent << ' ' << noOfAparition;
    else fout << -1;
    return 0;
}