Pagini recente » Cod sursa (job #1663180) | Cod sursa (job #1311765) | Cod sursa (job #880706) | Cod sursa (job #377138) | Cod sursa (job #854802)
Cod sursa(job #854802)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <cmath>
#include <iomanip>
#include <string>
#include <cstring>
#include <deque>
#include <stack>
#include <bitset>
#include <list>
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_front
#define mp(a,b) make_pair (a, b)
#define ll long long
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
using namespace std;
int N, cnt;
int v[1000011];
stack <int> stiva;
void Citire ()
{
ifstream fin ("elmaj.in");
fin >> N;
for (int i = 0; i < N; i++)
fin >> v[i];
fin.close ();
}
int Business ()
{
for (int i = 0; i < N; i++)
{
if (stiva.empty () || stiva.top () == v[i]) stiva.push (v[i]);
else stiva.pop ();
}
int K = stiva.top ();
for (int i = 0; i < N; i++)
{
if (v[i] == K) cnt++;
}
if ((N & 1) && cnt > (N >> 1)) return K;
if (!(N & 1) && cnt >= (N >> 1)) return K;
return -1;
}
void Scriere ()
{
ofstream fout ("elmaj.out");
int a = Business ();
if (a != -1) fout << a << " " << cnt;
else fout << a;
fout.close ();
}
int main ()
{
Citire ();
Scriere ();
return 0;
}