Pagini recente » Cod sursa (job #635677) | Cod sursa (job #600240) | Borderou de evaluare (job #20171) | Borderou de evaluare (job #906906) | Cod sursa (job #799704)
Cod sursa(job #799704)
#include <fstream>
using namespace std;
const int maxn=800010;
int n, st[maxn],dr[maxn], nr[maxn], val[maxn], v, nrmax, nrnod,i;
ifstream f1("elmaj.in");
ofstream f2("elmaj.out");
void cauta(int nod, int x) {
if (x==val[nod]) nr[nod]++; else
if (x<val[nod]) {
if (st[nod]) cauta(st[nod],x);
else { nrnod++; st[nod]=nrnod; val[nrnod]=x; nr[nrnod]=1; }; }
else if (dr[nod]) cauta(dr[nod],x);
else {nrnod++; dr[nod]=nrnod; val[nrnod]=x; nr[nrnod]=1; }; }
int main() {
f1>>n;
f1>>v; nrnod=1; val[1]=v; nr[1]=1;
for (i=2; i<=n; i++)
{ f1>>v;
cauta(1,v); };
for (i=1; i<=nrnod; i++)
if (nr[i]>=n/2+1) {nrmax=nr[i]; v=val[i]; break;};
if (nrmax) f2<<v<<" "<<nrmax;
else f2<<-1;
return 0;}