Cod sursa(job #1710533)

Utilizator cami9719Camelia Hanes cami9719 Data 29 mai 2016 10:46:48
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.56 kb
#include <iostream>
#include <fstream>
#include <cmath>
#define maxx 1001
using namespace std;
ifstream f("elmaj.in");
ofstream g("elmaj.out");


/*struct hashh {
    int nrEl;
int vect[maxx/2];
};

int M;

void incarcaHash ( hashh H[] ){
for ( int i = 0; i< maxx; i++ ){
    H[i].nrEl = 0;
}
}

void citireSir ( int sir[], int& lungime ){
f >> lungime;
M = sqrt(lungime)+1;
for ( int i = 0; i< lungime; i++ )
    f >> sir[i];
//f.close();
}


void inserare ( int& lungime, int sir[], int val ){
if ( lungime == 0 ){
    sir[lungime ] = val;
    lungime ++;
}else{
    int i = lungime - 1;
    lungime  ++;
    while ( sir[i] > val ){
        sir[i+1] = sir[i];
        i--;
    }
    sir[i+1] = val;
}
}


void adaugaInformatiiHash ( int sir[], int lungime, hashh H[] ){
for ( int i = 0; i< lungime; i++ ){
   inserare( H[sir[i]%M].nrEl, H[sir[i]%M].vect, sir[i]);
}
}

int cautaElement_majoritar ( hashh H[], int lungime){
for ( int i = 0; i< M; i++ ){
    if( H[i].nrEl > lungime/2 ){
        if ( H[i].vect[0] == H[i].vect[H[i].nrEl / 2 ] && H[i].nrEl/2 > lungime/2)
            return H[i].vect[0];
    }
}
return -1;
}
*/
int main()
{
   /* int sir[maxx], lungime;
    hashh H[maxx];
    citireSir(sir, lungime);
    incarcaHash(H);
    adaugaInformatiiHash(sir, lungime, H);
    g << cautaElement_majoritar(H, lungime);
    f.close();
    g.close();
    return 0;*/
    int n,M=0,c[10001]={},x,p;
f>>n;
for(int i=1;i<=n;i++){f>>x;c[x]++;
if(c[x]>M){M=c[x];p=x;}}
if(M>=(n+1)/2)g<<p<<' '<<M;else g<<-1;
return 0;}