Cod sursa(job #764754)

Utilizator mi5humihai draghici mi5hu Data 6 iulie 2012 10:05:04
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 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 nr = 0;
     int el = v[0];
     for (int i = 1; i < n; i++) {
         if (v[i] == el) {
            nr++;         
         } else {
            nr--;       
         }
         
         if (nr < 0) {
            nr = 0;
            el = v[i];
         }
     }
     
     nr = 0;
     for (int i = 0; i < n; i++) {
         if (v[i] == el) {
            nr++;
         }    
     }
         
     if (nr > n/2 ) {
        printf("%d %d", el, nr);
     } else {
        printf("-1");       
     }
}

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