Pagini recente » Cod sursa (job #931684) | Cod sursa (job #1138182) | Cod sursa (job #2076266) | Cod sursa (job #1128814) | Cod sursa (job #1511940)
#include <fstream>
#include <vector>
std::ifstream in("elmaj.in");
std::ofstream out("elmaj.out");
std::pair<int, int> mooreMajority(std::vector<int>& v) {
int candidate = -1, k = 0;
for (int i = 0; i < v.size(); i++) {
if (k == 0) {
candidate = v[i];
} else if (v[i] == candidate) {
k++;
} else {
k--;
}
}
if (candidate < 0) {
return std::make_pair(candidate, -1);
}
int voters = 0;
for (int i = 0; i < v.size(); i++) {
if (v[i] == candidate) {
voters++;
}
}
if (voters > v.size() / 2) {
return std::make_pair(candidate, voters);
} else {
return std::make_pair(-1, -1);
}
}
int main() {
int n;
std::vector<int> v;
in >> n;
int nb;
for (int i = 1; i <= n; i++) {
in >> nb;
v.emplace_back(nb);
}
std::pair<int, int> p = mooreMajority(v);
if (p.first < 0) {
out << "-1" << '\n';
} else {
out << p.first << " " << p.second << '\n';
}
return 0;
}