Pagini recente » Cod sursa (job #2273671) | Cod sursa (job #1596603) | Cod sursa (job #2322605) | Cod sursa (job #3158477) | Cod sursa (job #2446030)
#include <bits/stdc++.h>
using namespace std;
template<class T>
class majorityElement
{
private:
#define uint unsigned int
std::vector<T>elements;
public:
void addElement(T &el)
{
elements.push_back(el);
}
bool findMajorityElement(T &ans, uint &nrAp)
{
int ap = 1;
T maj = elements[0];
for (uint i=1;i<elements.size();++i)
{
if (elements[i] == maj)
++ap;
else
--ap;
if (ap == -1)
ap = 1, maj = elements[i];
}
ap = 0;
for (uint i=0;i<elements.size();++i)
if (elements[i] == maj) ++ap;
bool res = false;
if (ap * 2 > elements.size()) res = true, ans = maj, nrAp = ap;
return res;
}
};
int main()
{
int n, x;
freopen("elmaj.in","r",stdin);
freopen("elmaj.out","w",stdout);
scanf("%d",&n);
majorityElement<int>maj;
for (int i=1;i<=n;++i)
{
scanf("%d",&x);
maj.addElement(x);
}
int ans;
unsigned int ap;
bool an = maj.findMajorityElement(ans, ap);
if (an)
printf("%d %d\n", ans, ap);
else
printf("-1\n");
return 0;
}