Cod sursa(job #1452804)

Utilizator GilgodRobert B Gilgod Data 21 iunie 2015 20:32:34
Problema Elementul majoritar Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <map>
#include <assert.h>

const char IN[] = "elmaj.in", OUT[] = "elmaj.out";

using namespace std;

map<int, int> hash_map;
int N;

inline void read_data() {
	int elMaj, elMajAp = -1;
	assert(freopen(IN, "r", stdin));
	assert(scanf("%d", &N));
	for (int i = 0; i < N; ++i) {
		int x;
		assert(scanf("%d", &x));
		std::map<int,int>::iterator it = hash_map.find(x);
		if (it == hash_map.end()) hash_map.emplace(x, 1);
		else {
			++it->second;
			if (it->second >= N / 2 + 1) {
				elMaj = it->first;
				elMajAp = it->second;
				break;
			}
		}
	}
	fclose(stdin);
	if (elMajAp == -1) {
		fprintf(fopen(OUT, "w"), "-1\n");
	}
	else {
		assert(fprintf(fopen(OUT, "w"), "%d %d\n", elMaj, elMajAp));
	}
}

int main() {
	read_data();
	return 0;
}