Cod sursa(job #1808717)

Utilizator rangalIstrate Sebastian rangal Data 18 noiembrie 2016 00:02:16
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <cstdio>
#include <iostream>
#define in "elmaj.in"
#define out "elmaj.out"
#define mod 666013

using namespace std;

struct nod{
    int info,ct;
    nod *urm;
} *h[mod];

int n;

int main()
{
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);

    scanf("%d",&n);
    for(int i=1; i<=n; ++i)
    {
        int X,r;
        scanf("%d",&X);
        r=X%mod;

        nod *p;
        for(p=h[r]; p!=NULL && p->info!=X; p=p->urm);
        if(p==NULL)
        {
            nod *c=new nod;
            c->ct=1;
            c->info=X;
            c->urm=h[r];
            h[r]=c;
        }
        else ++(p->ct);
    }
    for(int i=0; i<mod; ++i)
    {
        nod *c;
        for(c=h[i]; c!=NULL && (c->ct)< n/2+1 ; c=c->urm);
        if(c!=NULL)
        {
            printf("%d %d\n",c->info,c->ct);
            return 0;
        }
    }

    printf("-1\n");

    fclose(stdin); fclose(stdout);
    return 0;
}