Cod sursa(job #639643)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 23 noiembrie 2011 18:30:57
Problema Elementul majoritar Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <cstdio>
#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 ()
{
    freopen ("elmaj.in", "r", stdin);
    scanf ("%d", &N);
    for (int i=1; i<=N; ++i)
    {
        int X;
        scanf ("%d", &X);
        Insert (X);
    }
}

void Print ()
{
    freopen ("elmaj.out", "w", stdout);
    if (SN>=N/2+1)
    {
        printf ("%d %d\n", SX, SN);
    }
    else
    {
        printf ("-1\n");
    }
}

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