Pagini recente » Cod sursa (job #2312836) | Cod sursa (job #3208422) | Cod sursa (job #1397011) | Cod sursa (job #2483423) | Cod sursa (job #2382658)
/**
* 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;
}