Pagini recente » Cod sursa (job #2262673) | Cod sursa (job #542056) | Cod sursa (job #2252786) | Cod sursa (job #2873816) | Cod sursa (job #3339516)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("elmaj.in");
ofstream cout("elmaj.out");
int n;
vector<int> v;
int main() {
cin >> n;
v.assign(n, 0);
int candidate = -1, uncancelled_elems = 0;
for (int i = 0 ; i < n ; ++i) {
cin >> v[i];
if (uncancelled_elems == 0) { // Beginning or everybody until now has cancelled each other. That means we choose a new candidate.
candidate = v[i];
uncancelled_elems = 1;
}
else if (candidate == v[i]) uncancelled_elems++; // This element now waits to be cancelled
else uncancelled_elems--; // This element cancels with one from the uncancelled ones.
}
// We check it's actually n / 2 + 1 times.
int cnt = 0;
for (int i = 0 ; i < n ; ++i) {
if (v[i] == candidate) ++cnt;
}
if (cnt >= n / 2 + 1) cout << candidate << " " << cnt;
else cout << -1;
return 0;
}