Cod sursa(job #1101531)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 8 februarie 2014 17:18:31
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
#define DIM 1000004
FILE *f=fopen("elmaj.in","r"), *g=fopen("elmaj.out","w");

long int n, v[DIM];

void citire(){
long int i;

    fscanf(f,"%ld\n",&n);
    for(i=1;i<=n;i++)
        fscanf(f,"%ld ",&v[i]);

}

void elementul_majoritar(){
long int i, last=-1, k=0, nr;

    for(i=1;i<=n;i++){

        if( k==0 ){ last= v[i]; k=1; }
        else if( v[i]==last ){ k++; }
        else { k--; }

    }
    if( last == -1 ) { fprintf(g,"-1\n"); return; }

    nr=0;
    for(i=1;i<=n;i++)
        if( v[i]==last )nr++;

    if( nr >= n/2+1 ) { fprintf(g,"%ld %ld\n",last,nr); return; }

    fprintf(g,"-1\n"); return;
}

int main(){

    citire();
    elementul_majoritar();

return 0;
}