Cod sursa(job #764613)

Utilizator mi5humihai draghici mi5hu Data 5 iulie 2012 17:56:16
Problema Elementul majoritar Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <stdio.h>
#include <map>
using namespace std;

int v[1000010];
map<int, int> rez;
int n;

void citeste() {
     scanf("%d", &n);
     for (int i = 0; i < n; i++) {
         scanf("%d", &v[i]);
     }     
}

void rezolva() {
     for (int i = 0; i < n; i++) {
         map<int, int>::iterator it;
         it = rez.find(v[i]);
         if (it == rez.end()) {
            rez.insert(pair<int, int>(v[i], 1));              
         } else {
            int a = (*it).second;
            rez.erase(it);
            rez.insert(pair<int, int>(v[i], a + 1));       
         }
     } 
          
     map<int, int>::iterator it;
     int rez1 = -1;
     int rez2 = -1;
     for (it = rez.begin(); it != rez.end(); it++) {
         if ((*it).second > n/2) {
            rez1 = (*it).first;
            rez2 = (*it).second;                    
         }
     }    
     if (rez1 != -1) {
        printf("%d %d", rez1, rez2);
     } else {
        printf("-1");       
     }
}

int main(){
    freopen("elmaj.in", "r", stdin);
    freopen("elmaj.out", "w", stdout);
    
    citeste();
    rezolva();
}