Cod sursa(job #1489031)

Utilizator alex.vasiuVasiu Alexandru alex.vasiu Data 20 septembrie 2015 14:11:48
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

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