Pagini recente » Cod sursa (job #2632822) | Cod sursa (job #2112870) | Cod sursa (job #1607111) | Cod sursa (job #2502593) | Cod sursa (job #1896647)
#include <vector>
#include <fstream>
#include <algorithm>
std::pair<int,int> moore(std::vector<int> v) {
int candidate = v[0];
int count = 1;
for (int i = 1; i < v.size(); i++) {
if (v[i] == candidate) {
count++;
}
else {
count--;
}
if (count <= 0) {
candidate = v[i];
count = 1;
}
}
count = 0;
for (int i = 0; i < v.size(); i++) {
if (v[i] == candidate)
count++;
}
if (count > v.size() / 2)
return std::make_pair(candidate, count);
return std::make_pair(-1, -1);
}
int main(void) {
std::ifstream in("elmaj.in");
int n;
in >> n;
std::vector<int> v(n);
for (int i = 0; i < n; i++)
in >> v[i];
in.close();
std::ofstream out("elmaj.out");
std::pair<int, int> result = moore(v);
if (!result.second)
out << -1;
else
out << result.first << " " << result.second;
out.close();
return 0;
}