Cod sursa(job #1990910)

Utilizator japjappedulapPotra Vlad japjappedulap Data 14 iunie 2017 09:24:35
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream>
#include <stack>
using namespace std;

int A[1000];

void printstk(stack<int> stk)
{
	while (!stk.empty() ) cout << stk.top() << ' ', stk.pop();
	cout << '\n';
}

int main()
{
	stack <int> Stk;
	int N;
	cin >> N;
	for (int i = 1; i <= N; ++i)
		cin >> A[i];
	for (int i = 1; i <= N; ++i)
	{
		if (Stk.empty())
			Stk.push(A[i]);
		else if (A[i] == Stk.top())
			Stk.push(A[i]);
		else
			Stk.pop();

		//printstk(Stk);
	}
	if (Stk.empty())
	{
		cout << -1;
		return 0;
	}
	int cand = Stk.top();
	int cnt = 0;
	for (int i = 0; i < N; ++i)
		if (A[i+1] == cand)
			cnt++;
	
	if (cnt > N/2)
		cout << cand << ' ' << cnt;
	else
		cout << -1;
	return 0;
}