Pagini recente » Cod sursa (job #2957170) | Istoria paginii runda/igorj_2/clasament | Cod sursa (job #2288449) | Cod sursa (job #1766965) | Cod sursa (job #1867829)
#include <fstream>
#include <algorithm>
#define DMAX 1000000
using namespace std;
ifstream cin("elmaj.in");
ofstream cout("elmaj.out");
struct sir
{
long long element;
int aparitii;
};
sir v[DMAX];
long long x;
int elemente=1, n;
int bsearch(long long x);
bool criteriu1(sir a, sir b)
{
return a.element>b.element;
}
bool criteriu2(sir a, sir b)
{
return a.aparitii>b.aparitii;
}
int main()
{
int i, x, locatie;
cin >> n;
cin >> v[0].element;
v[0].aparitii=1;
for (i=2; i<=n; i++)
{
cin >> x;
locatie=bsearch(x);
if (locatie>=0) v[locatie].aparitii++;
else
{
elemente++;
v[elemente-1].element=x;
v[elemente-1].aparitii=1;
sort (v, v+elemente, criteriu1);
}
}
sort (v, v+elemente, criteriu2);
if (v[0].aparitii>=(n/2)+1)
{
cout << v[0].element<< ' '<< v[0].aparitii;
return 0;
}
else
{
cout << "-1";
return 0;
}
}
int bsearch(long long x)
{
int st, dr, mid;
st=-1;
dr=elemente-1;
while (dr-st>1)
{
mid=(dr+st)/2;
if (x<v[mid].element) st=mid;
else dr=mid;
}
if ((dr<elemente)&&(x==v[dr].element))
return dr;
else return -1;
}