Cod sursa(job #1077002)

Utilizator razvan9310FMI - Razvan Damachi razvan9310 Data 10 ianuarie 2014 19:58:39
Problema Elementul majoritar Scor 80
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.92 kb
#include <fstream>
#include <unordered_map>
#define MAXN 1000000
using namespace std;

int main() {
	int N, *v;
	ifstream in("elmaj.in");
	in >> N;
	v = new int[N];

	unordered_map<unsigned, unsigned> hashmap;

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

		unordered_map<unsigned, unsigned>::iterator found = hashmap.find(v[i]);

		if (found == hashmap.end()) {
			hashmap.insert(make_pair(v[i], 1));
		} else {
			int count = found->second;
			hashmap.erase(found);
			hashmap.insert(make_pair(v[i], count + 1));
		}
	}
	delete[] v;
	in.close();

	int best = -1, count = 0;
	unordered_map<unsigned, unsigned>::iterator i = hashmap.begin(), stop = hashmap.end();

	while (i != stop) {
		if (i->second >= N / 2 + 1) {
			best = i->first;
			count = i->second;
		}
		++i;
	}

	ofstream out("elmaj.out");
	out << best << " ";
	if (best != -1) {
		out << count;
	}
	out.close();

	return 0;
}