Cod sursa(job #1256709)

Utilizator andreey_047Andrei Maxim andreey_047 Data 6 noiembrie 2014 19:34:57
Problema Elementul majoritar Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#define In "elmaj.in","r",stdin
#define Out "elmaj.out","w",stdout
#include <cstdio>
#define nmax 1000009
using namespace std;
int A[nmax],n,nr;
inline int solve(){
 int cand,k,i;
 cand=-1;k=0;
 for(i=2;i<=n;i++){
 if(k==0){cand=A[i];k=0;}
 else if(A[i]==cand) k++;
 else k--;}
 if(cand < 0) return -1;
 for(i=1;i<=n;i++)
    if(A[i]==cand) nr++;
    if(nr>n/2)
  return cand;
  return -1;
}

int main(){
    int i;
    freopen(In);
    freopen(Out);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&A[i]);
    i=solve();
    if(i==-1) cout<<"-1";
    else cout<<i<<' '<<nr;
    cout<<'\n';
    return 0;
}