Cod sursa(job #915451)

Utilizator Ionut228Ionut Calofir Ionut228 Data 15 martie 2013 00:55:54
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<fstream>
#include<vector>

using namespace std;

ifstream fin("elmaj.in");
ofstream fout("elmaj.out");

#define MOD 60000

int n,x,a,r;
vector< vector <int> > h;
vector< vector <int> > poz;

int f(int x)
{
    x=x+2;
    x=x-5;
    x=x/7;
    x=x*9;
    return x%MOD;
}

int verificare (int x)
{
    int lg,nr;
    lg=h[f(x)].size();
    nr=f(x);
    for(int i=0;i<lg;i++)
    {
        if(h[nr][i]==x)
        {
            poz[nr][i]++;
            if(poz[nr][i]>=n/2+1)
            {
                r=x;
                a=poz[nr][i];
            }
            return 1;
        }
    }
    return 0;
}

void adaugare (int x)
{
    int nr;
    nr=f(x);
    h[nr].push_back(x);
    poz[nr].push_back(1);
}

int main ()
{
    fin>>n;
    h.resize(MOD);
    poz.resize(MOD);
    for(int i=1;i<=n;i++)
    {
        fin>>x;
        if(verificare(x)==0)
            adaugare(x);
    }
    if(a>=n/2+1)
        fout<<r<<" "<<a;
    else
        fout<<"-1";
    fin.close();fout.close();
    return 0;
}