Cod sursa(job #3220029)
Utilizator | Flavius Andronic gBne | Data | 2 aprilie 2024 08:33:36 |
---|---|---|---|
Problema | Elementul majoritar | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.71 kb |
#include <fstream>
using namespace std;
ifstream fin("elmaj.in");
ofstream fout("elmaj.out");
const int NMax = 1000005;
int v[NMax], n;
int main()
{
fin >> n;
for(int i=1; i<=n; ++i){
fin >> v[i];
}
int st = 0, cand = 0;
for(int i=1; i<=n; ++i){
if(st < 1){
cand = v[i];
st = 1;
}
else if(v[i] != cand){
-- st;
}
else{
++ st;
}
}
int cnt = 0;
for(int i=1; i<=n; ++i){
cnt += (v[i] == cand);
}
if(cnt >= (n / 2) + 1){
fout << cand << ' ' << cnt << '\n';
}
else{
fout << -1 << '\n';
}
return 0;
}