Cod sursa(job #1959996)

Utilizator sichetpaulSichet Paul sichetpaul Data 10 aprilie 2017 09:26:13
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>

using namespace std;
int a[1000001];
int majority(int n,int a[]) {
   int cand=-1,k=0;
   for (int i=1;i<=n;++i) {
      if (k==0) {
        cand=a[i];
        k=1;
      }
      else {
        if (a[i]==cand) ++k;
       else --k;
   }
}
     if (cand<0) return cand;
     int nr=0;
     for (int i=1;i<=n;++i)
        if (a[i]==cand) ++nr;
     if (nr>n/2) return cand;
     else return -1;
}
int main()
{ int n,i,el,ap=0;
    ifstream f("elmaj.in");
    ofstream g("elmaj.out");
    f>>n;
    for (i=1;i<=n;++i)
        f>>a[i];
    if (majority(n,a)==-1) g<<"-1";
    else {
       el=majority(n,a);
       for (i=1;i<=n;++i)
        if (a[i]==el) ++ap;
        g<<el<<" "<<ap;
    }
    return 0;
}