Cod sursa(job #1047631)

Utilizator medeea0507Medeea Lazea medeea0507 Data 4 decembrie 2013 19:31:33
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <vector>
#include <fstream>
#include <stdlib.h>
using namespace std;

ifstream fin("elmaj.in");
ofstream fout("elmaj.out");

#define prime 666013
vector < pair<int,int> > h[prime];
vector <int> a;
int main()
{
    int poz,j,n,i,k;
    fin>>n;k=n;
    for (i=0;i<n;i++)
    {
        fin>>j;
        a.push_back(j);
    }
    for (i=0;i<n;i++)
    {
       poz=a[i]%prime;
        if (h[poz].size()==0)
            h[poz].push_back(make_pair(a[i],1));
        else
         {
            for (j=0;j<h[poz].size();j++)
               if (h[poz][j].first==a[i])
                  h[poz][j].second++;
            a[i]=a.back();
            a.pop_back();
            i--;n--;
         }
    }
    int ok=0;
    for (i=0;i<n;i++)
    {
        poz=a[i]%prime;
        for (j=0;j<h[poz].size();j++)
           if (h[poz][j].second>k/2)
           {
               ok=1;
               fout<<h[poz][j].first<<" "<<h[poz][j].second<<endl;
           }
    }
    if(!ok)
        fout<<"-1";
    return 0;
}