Cod sursa(job #1061556)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 19 decembrie 2013 22:04:08
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.83 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

#define MOD 666019
#define NMAX 1000001

int i, N;
int maxAp, value;

int v[NMAX];

struct nod {
	int val;
	int ap;
	nod *next;
};
nod *H[MOD + 3];

void add(int x) {
	nod *p = new nod;
	p->val = x;
	p->ap = 1;
	p->next = H[x % MOD];
	H[x % MOD] = p;
}

int Search_Hash(int x) {
	for (nod *it = H[x]; it; it = it->next) 
		if (it->val == v[i]){++it->ap; return it->ap;}
	return 0;
}

int main() {
	fin >> N;
	for (i = 1; i <= N; ++i) {
		fin >> v[i];
		int cnt = Search_Hash(v[i] % MOD);
		if (!cnt) 
			add(v[i]);
		else
			if (cnt > maxAp) maxAp = cnt, value = v[i];
	}
	if (maxAp >= N / 2 + 1) fout << value << ' ' << maxAp << '\n';
	else 
		fout << -1 << '\n';
	return 0;
}