Cod sursa(job #1168390)

Utilizator span7aRazvan span7a Data 8 aprilie 2014 11:03:26
Problema Elementul majoritar Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<fstream>
#include<algorithm>
#define MOD 666013
#include<vector>
#include<cstring>
#define M -1<<30
using namespace std;
ifstream f("elmaj.in");
ofstream g("elmaj.out");
vector<int>L[666013];
int cat[1550];
int T,n,maxx,m;
void solve(int lista)
{
    int j,numar;
    maxx=M;
    memset(cat,0,sizeof(cat));
    for(j=0;j<L[lista].size();j++)
       {
           cat[L[lista][j]/MOD]++;
           if(L[lista][j]/MOD>maxx)maxx=L[lista][j]/MOD;
       }
    for(j=0;j<=maxx;j++)
        if(cat[j]>n/2)
        {
            numar=MOD*j+lista;
            g<<numar<<" "<<cat[j];
            return;
        }
    g<<-1;

}
int main()
{
    int i,x,lista,k;
    int ok,maxlist;
        f>>n;
        ok=0;
        maxlist=M;
        for(i=1;i<=n;i++)
            {
                f>>x;
                L[x%MOD].push_back(x);
                if(L[x%MOD].size()>n/2){ lista=x%MOD; ok=1;}
                if(x%MOD>maxlist)maxlist=x%MOD;

            }
        if(ok==0) g<<-1;
        else solve(lista);


    return 0;
}