Cod sursa(job #639646)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 23 noiembrie 2011 18:33:14
Problema Elementul majoritar Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>

#define U 666013
#define x first
#define n second

using namespace std;

vector < pair <int, int> > H[U];
int N, SX, SN;

void Insert (int X)
{
    int Key=X%U;
    for (unsigned i=0; i<H[Key].size (); ++i)
    {
        if (H[Key][i].x==X)
        {
            ++H[Key][i].n;
            if (H[Key][i].n>SN)
            {
                SN=H[Key][i].n;
                SX=X;
            }
            return;
        }
    }
    H[Key].push_back (make_pair (X, 1));
    if (H[Key].back ().n>SN)
    {
        SN=H[Key].back ().n;
        SX=X;
    }
}

void Read ()
{
    ifstream fin ("elmaj.in");
    fin >> N;
    for (int i=1; i<=N; ++i)
    {
        int X;
        fin >> X;
        Insert (X);
    }
    fin.close ();
}

void Print ()
{
    ofstream fout ("elmaj.out");
    if (SN>=N/2+1)
    {
        fout << SX << " " << SN << "\n";
    }
    else
    {
        fout << "-1\n";
    }
    fout.close ();
}

int main()
{
    Read ();
    Print ();
    return 0;
}