Cod sursa(job #643757)

Utilizator lavinia_nLavinia Nastase lavinia_n Data 4 decembrie 2011 13:38:58
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
#include<stdlib.h>
#include<fstream>

using namespace std; 

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

const int N=1000001;
int nr=0; //frecventa aparitiilor

int maj(int n, int a[], int &nr) {
    int x = -1, k=0;             //x este elem majoritar.
    for (int i = 0; i < n; i++) {
        if (!k) {
           x = a[i];
           k = 1;
           } 
        else 
             if (a[i] == x) 
                k++;   
             else
                 k--;  
    }
    if (x < 0)
       return x;
    for (int i = 0; i < n; i++) {
        if (a[i] == x)
        nr++;
    }
    if (nr > n / 2)
       return x;
    else
        return -1;
}

int main(){
    int i,n,v[100];
    in>>n;
    for(i=0;i<n;i++)
           in>>v[i];
    out<<maj(n,v,nr)<<" "<<nr;
    in.close();
    out.close();
    return 0;
}