Pagini recente » Cod sursa (job #1410575) | Cod sursa (job #1365875) | Cod sursa (job #3280657) | Cod sursa (job #2379231) | Cod sursa (job #2382656)
/**
* Given an array of N natural numbers, find the number that appears more than N/2 times.
*/
#include <bits/stdc++.h>
std::ifstream fin("elmaj.in");
std::ofstream fout("elmaj.out");
int N, element = -1, nr = 0;
std::vector<int> V;
int main() {
fin >> N;
for(int x, i = 0; i < N; ++i) {
fin >> x;
V.push_back(x);
}
for(int i = 0; i < N; ++i) {
if(nr < 0) {
element = V[i];
nr = 1;
}
else {
if(element == V[i]) {
++nr;
}
else {
--nr;
}
}
}
if(element >= 0) {
nr = 0;
for(int i = 0; i < N; ++i) {
if(V[i] == element) {
++nr;
}
}
if(nr < N/2+1) {
element = -1;
}
}
fout << element;
if(element != -1) {
fout << ' ' << nr << '\n';
}
fin.close();
fout.close();
return 0;
}