Pagini recente » Borderou de evaluare (job #2903669) | Cod sursa (job #3213389) | Cod sursa (job #556908) | Cod sursa (job #385522) | Cod sursa (job #2923623)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("elmaj.in");
ofstream fout ("elmaj.out");
const int NMAX = 1e6 + 3;
int N;
vector < int > v;
int vinit[NMAX];
bool op(int &cnt)
{
if(v.empty() || cnt < 2)
return false;
if(v[cnt] != v[cnt - 1]) {
v.erase(v.begin() + cnt - 1, v.begin() + cnt);
cnt -= 2;
return true;
}
return false;
}
int main()
{
fin >> N;
for(int i = 1; i <= N; ++i) {
fin >> vinit[i];
v.push_back(vinit[i]);
}
int cnt = 1;
for(;;)
if(!op(++cnt))
break;
if(v.size() == 0) {
fout << "-1\n";
return 0;
}
int maj = v[0];
int freq = 0;
for(int i = 1; i <= N; ++i)
if(vinit[i] == maj)
++freq;
if(freq < N / 2 + 1) {
fout << "-1\n";
return 0;
}
fout << maj << ' ' << freq << '\n';
return 0;
}