Cod sursa(job #1391141)

Utilizator alex.bullzAlexandru Lilian alex.bullz Data 17 martie 2015 17:43:49
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>

int* elemen_majoritar (int* v, int n) {
	int  num = v[0], contor = 1, c = 0;
	int* a = new int[2];

	for (int i = 1; i < n; ++i) {
		if (v[i] == num) {
			++contor;
		} else {
			--contor;
		}

		if (contor <= 0) {
			num = v[i];
			contor = 1;
		}
	}

	for (int i = 0; i < n; ++i) {
		if (v[i] == num) {
			++c;
		}
	}

	if (c >= n / 2) {
		a[0] = num;
		a[1] = c;
	}
	return a;
}

int main() {
	std::ifstream in;
	std::ofstream out;
	int n;
	int *sol = new int[2];

	in.open ("elmaj.in");
	out.open ("elmaj.out");

	in >> n;

	int *v = new int[n];

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

	sol = elemen_majoritar (v, n);

	delete[] v;


	if (sol[0] != -1)
		out << sol[0] << " " << sol[1];
	else 
		out << -1;

	in.close();
	out.close();

	return 0;
}