Cod sursa(job #1876336)

Utilizator viftode4Iftode Vlad viftode4 Data 12 februarie 2017 11:39:11
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
using namespace std;
ifstream fin("elmaj.in");
ofstream fout("elmaj.out");
int da(int n, int a[1000001])
{
    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++;   // nu am putut împerechea pe votantul i şi astfel trebuie să mărim numărul de votanţi necuplaţi
        }
        else
            k--;   // cuplăm votantul i cu orice votant ce îl susţine pe cand şi micşorăm astfel numărul de votanţi necuplaţi
    }
    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[1000001], i;
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>a[i];
    fout<<da(n,a);
}