Cod sursa(job #2232283)

Utilizator Steff94Stefan Steff94 Data 18 august 2018 14:35:14
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<iostream>
#include<fstream>
using namespace std;

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

int mooreMajority(int n, int *v, int &nr_ap) {
	int cand = -1, k = 0;
	for (int i = 1; i <= n; i++)
	{
		if (k == 0) {
			cand = v[i];
			k++;
		}
		else if (v[i] == cand){
			k++;
		} else {
			k--;
		}
	}

	int nr = 0;
	for (int i = 1; i <= n; i++)
		if (v[i] == cand)
			nr++;

	if (nr > n / 2) {
		nr_ap = nr;
		return cand;
	}
	else
		return -1;
}



int main()
{
	int n, nr_ap = 0;
	int *v = new int[1000001];

	in >> n;
	for (int i = 1; i <= n; i++) {
		in >> v[i];
	}

	out << mooreMajority(n, v, nr_ap) << " ";
	out << nr_ap;

	/*
	for (int i = 1; i <= n; i++) {
		out << v[i];
	}
	*/

	return 0;
}