Pagini recente » Cod sursa (job #804278) | Cod sursa (job #2649419) | Cod sursa (job #1478632) | Cod sursa (job #819340) | Cod sursa (job #2224978)
#include <fstream>
#include <vector>
#include <string>
using namespace std;
const string IN_FILE = "elmaj.in";
const string OUT_FILE = "elmaj.out";
int count(const vector<int>& values, const int value) {
int c = 0;
for (const auto& v : values) {
c += v == value ? 1 : 0;
}
return c;
}
int findMajority(const vector<int>& values) {
int value = -1, c = 0;
for (const auto& v : values) {
if (value == v) {
c++;
} else if (c > 0) {
c--;
} else {
value = v;
c = 1;
}
}
return count(values, value) <= int(values.size()) / 2 ? -1 : value;
}
vector<int> readValues() {
ifstream in(IN_FILE);
int n;
in >> n;
auto values = vector<int>(n);
for (int i = 0; i < n; i++) {
in >> values[i];
}
in.close();
return values;
}
void writeMajority(const int value, const int c) {
ofstream out(OUT_FILE);
out << value << (value == -1 ? "" : " " + to_string(c)) << "\n";
out.close();
}
int main() {
const auto values = readValues();
const int value = findMajority(values);
const int c = count(values, value);
writeMajority(value, c);
return 0;
}