Cod sursa(job #2038008)

Utilizator RufusnuSofian Razvan Rufusnu Data 13 octombrie 2017 08:55:51
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
using namespace std;
int nr=0;
int majorit(int n,int a[],int &nr)
{
    int cand=-1, k=0;
    for(int i=1;i<=n;i++) {
        if(k==0) {
            cand=a[i];
            k=1;
        }
        else if(cand==a[i]) {
            k++;
        }
        else {
            k--;
        }
    }
    for(int i=1;i<=n;i++)
        if(a[i]==cand)
        nr++;
    if(nr>n/2)
        return cand;
    else
        return -1;
}

int main()
{
    ifstream fin("elmaj.in");
    ofstream fout("elmaj.out");
    int n;
    fin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++)
        fin>>a[i];
    fout<<majorit(n,a,nr);
    fout<<' '<<nr;
    return 0;
}