Cod sursa(job #1278509)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 28 noiembrie 2014 23:31:25
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <cstdio>
#include <cctype>
#define IN "elmaj.in"
#define OUT "elmaj.out"
#define NMAX 1000005
#define BUFF 10000
using namespace std;
FILE *in = fopen(IN, "r");
FILE *out = fopen(OUT, "w");
char buff[BUFF];
int pos = BUFF;
int v[NMAX];
inline char getch()
{
    if(pos == BUFF)
        fread_unlocked(buff, 1, BUFF, in), pos = 0;
    return buff[pos++];
}
inline int readInt()
{
    char c;
    int nr = 0;
    do
    {
        c = getch();
    }
    while(!isdigit(c));
    do
    {
        nr = (nr << 1) + (nr << 3) + (c - '0');
        c = getch();
    }
    while(isdigit(c));
    return nr;
}
int main()
{
    int N, i, k = 0, p;
    N = readInt();
    for(i = 0; i < N; ++i)
    {
        v[i] = readInt();
        if(!k)
        {
            p = v[i];
            k = 1;
        }
        else if(v[i] == p)
            ++k;
        else
            --k;
    }
    k = 0;
    for(i = 0; i < N; ++i)
    {
        if(v[i] == p)
            ++k;
    }
    if(k > (N >> 1))
        fprintf(out, "%d %d\n", p, k);
    else
        fprintf(out, "-1\n");
    fclose(in);
    fclose(out);
    return 0;
}