Cod sursa(job #906335)

Utilizator Master011Dragos Martac Master011 Data 6 martie 2013 19:05:33
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<cstdio>
using namespace std;
FILE *in,*out;

int v[1000000];

int pretendent(int n){
    int i,nrc=v[1],ap=1;
    for(i=2;i<=n;i++){
        if(v[i]!=nrc    &&  ap>0)   ap--;
        else if(v[i]==nrc)  ap++;
        else if(v[i]!=nrc   &&  ap==0){
            ap=1;
            nrc=v[i];
        }
    }
    if(ap>0)
        return nrc;
    return -1;
}

int main(){
    in=fopen("elmaj.in","r");
    out=fopen("elmaj.out","w");

    int n;
    fscanf(in,"%d",&n);
    int i;
    for(i=1;i<=n;i++)   fscanf(in,"%d",&v[i]);
    fclose(in);

    int pret;
    pret=pretendent(n);
    if(pret==-1){
        fprintf(out,"%d",pret);
        fclose(out);
        return 0;
    }
    int ap=0;
    for(i=1;i<=n;i++)
        if(v[i]==pret)
            ++ap;
    if(ap>n/2)
        fprintf(out,"%d %d",pret,ap);
    else fprintf(out,"%d",pret);
    fclose(out);
    return 0;
}