Cod sursa(job #921939)

Utilizator Ionut228Ionut Calofir Ionut228 Data 21 martie 2013 20:41:37
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include<fstream>

using namespace std;

ifstream f("elmaj.in");
ofstream g("elmaj.out");

int n,a,nr,v[1000001],w[1000001];
bool ok=true;

int dei (int x)
{
    if(x==1)
        return w[1];
    if(x==0)
        return 0;
    a=0;
    if(x%2==1)
    {
        x++;
        w[x]=w[x-1];
    }
    for(int i=1;i<=x;i=i+2)
    {
        if(w[i]==w[i+1])
        {
            a++;
            w[a]=w[i];
        }
    }
    return dei(a);
}

int main ()
{
    f>>n;
    for(int i=1;i<=n;i++)
    {
        f>>v[i];
        w[i]=v[i];
    }
    if(n%2==1)
    {
        n++;
        v[n]=v[n-1];
        w[n]=v[n];
        ok=false;
    }
    nr=dei(n);
    if(nr==0)
        g<<"-1";
    else
    {
        a=0;
        if(ok==false)
        {
            for(int i=1;i<=n-1;i++)
                if(v[i]==nr)
                    a++;
            if(a>=(n-1)/2+1)
                g<<nr<<" "<<a;
            else
                g<<"-1";
        }
        else if(ok==true)
        {
            for(int i=1;i<=n;i++)
                if(v[i]==nr)
                    a++;
            if(a>=n/2+1)
                g<<nr<<" "<<a;
            else
                g<<"-1";
        }
    }
    f.close();g.close();
    return 0;
}