Cod sursa(job #764615)

Utilizator mi5humihai draghici mi5hu Data 5 iulie 2012 18:00:34
Problema Elementul majoritar Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 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() {
     int rez1 = -1;
     int rez2 = -1;     
     map<int, int>::iterator it;
     for (int i = 0; i < n; i++) {
         it = rez.find(v[i]);
         if (it == rez.end()) {
            rez.insert(pair<int, int>(v[i], 1));         
         } else {
            int a = (*it).second;
            if ((*it).second + 1> n/2) {
               rez1 = (*it).first;
               rez2 = (*it).second + 1;                    
            }    
            
            rez.erase(it);
            rez.insert(pair<int, int>(v[i], a + 1));   
            
         }
     } 
     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();
}