Pagini recente » Cod sursa (job #670738) | Cod sursa (job #2276653)
#include <stdio.h>
#include <fstream>
using namespace std;
int V[1000000];
void elmaj(int* a,int l,int r, int & maj,int & nb){
if(r==l){
maj=a[l];
nb=1;
return;
}
int mid=(r+l)/2;
int maj1,nb1,maj2,nb2;
elmaj(a,l,mid,maj1,nb1);
elmaj(a,mid+1,r,maj2,nb2);
if(maj1==maj2){
maj=maj1;
nb=nb1+nb2;
}
else{
for(int i=l;i<=mid;i++){
if(a[i]==maj2)
nb2++;
}
for(int i=mid+1;i<=r;i++){
if(a[i]==maj1)
nb1++;
}
if(nb1>nb2){
maj=maj1;
nb=nb1;
}
else{
maj=maj2;
nb=nb2;
}
}
}
int main () {
int N;
ifstream fin("elmaj.in");
ofstream fout("elmaj.out");
fin >> N;
for (int i = 0; i < N; i++)
fin >> V[i];
int maj,nb;
elmaj(V,0,N-1,maj,nb);
if(nb>=(N/2+1)){
fout << maj << " " << nb;
}
else{
fout << "-1";
}
fin.close();
fout.close();
return 0;
}