Pagini recente » Cod sursa (job #2048360) | Cod sursa (job #1593341) | Cod sursa (job #2487282) | Cod sursa (job #2283808) | Cod sursa (job #1246332)
#include <fstream>
#define NMAX 1000000
#define cin f
#define cout g
using namespace std;
int numarElemente, tablou[NMAX];
ifstream f("elmaj.in");
ofstream g("elmaj.out");
void citesteTablou(int &numarElemente, int tablou[])
{
cin>>numarElemente;
for (int i=0; i<numarElemente; ++i) cin>>tablou[i];
}
int candidatElementMajoritar(int numarElemente, int tablou[])
{
int curent=tablou[0], numarAparitiiCurent=1;
for (int i=1; i<numarElemente; ++i)
if (numarAparitiiCurent!=0)
{
if (curent==tablou[i]) ++numarAparitiiCurent;
else --numarAparitiiCurent;
}
else
{
curent=tablou[i];
numarAparitiiCurent=1;
}
if (numarAparitiiCurent==0) return -1;
return curent;
}
int numara(int numarElemente, int tablou[], int candidat)
{
int numarAparitiiCandidat=0;
for (int i=0; i<numarElemente; ++i)
if (candidat==tablou[i]) ++numarAparitiiCandidat;
return numarAparitiiCandidat;
}
int main()
{
citesteTablou(numarElemente, tablou);
int candidat=candidatElementMajoritar(numarElemente, tablou);
int numar=numara(numarElemente, tablou, candidat);
if (candidat!=-1 && numar>numarElemente/2) cout<<candidat<<" "<<numar<<"\n";
else cout<<"-1\n";
return 0;
}