Cod sursa(job #901335)

Utilizator tanduraDomnita Dan tandura Data 1 martie 2013 09:44:14
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <cstdio>
using namespace std;

int n,x[1000001];

void citire()
{
    freopen("elmaj.in","r",stdin);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&x[i]);
}

int rezolvare()
{
    int i,elem,nr=-1;
    for(i=1;i<=n;i++)
    {
        if(nr<0)
        {
            elem=x[i];
            nr=1;
        }
        else
        {
            if(x[i]!=elem)
              nr--;
            else
              nr++;
        }
    }
    if(nr<0)
        elem=-1;
    return elem;
}

void afisare()
{
    int elem,i;
    elem=rezolvare();
    freopen("elmaj.out","w",stdout);
    if(elem<0)
        printf("%d\n",elem);
    else
    {
        int nr=0;
        for(i=1;i<=n;i++)
           if(x[i]==elem)
             nr++;
        if(nr>n/2)
            printf("%d %d",elem,nr);
        else
            printf("%d",-1);
    }

}

int main()
{
    citire();
    afisare();
    return 0;
}