Cod sursa(job #2658414)

Utilizator Fantastic_Mantudor voicu Fantastic_Man Data 13 octombrie 2020 21:59:53
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
const int BUFSIZE = (128*1024);
FILE *fin;
int rpos;
char rbuf[BUFSIZE];
static inline void initRead() {
    rpos=BUFSIZE-1;
}
static inline char readChar() {
    if(!(rpos=(rpos+1)&(BUFSIZE-1)))
        fread(rbuf,1,BUFSIZE,fin);
    return rbuf[rpos];
}
int readInt() {
    int ch,nr=0,semn=1;
    while(isspace(ch=readChar()));
    do
        nr=10*nr+ch-'0';
    while(isdigit(ch=readChar()));
    return semn*nr;
}
int main(int argc, const char * argv[]) {
    FILE *fout;
    int n,e,i,cate,x;
    fin=fopen("elmaj.in","r");
    initRead();
    n=readInt();
    e=readInt();
    cate=1;
    for(i=1;i<n;i++) {
        x=readInt();
        if(x!=e) {
            cate--;
            if(cate<0) {
                e=x;
                cate=1;
            }
        }
        else
            cate++;
    }
    fclose(fin);
    fin=fopen("elmaj.in","r");
    initRead();
    n=readInt();
    cate=0;
    for(i=0;i<n;i++) {
        x=readInt();
        if(e==x)
            cate++;
    }
    fclose(fin);
    fout=fopen("elmaj.out","w");
    if(cate>n/2)
        fprintf(fout,"%d %d\n",e,cate);
    else
        fprintf(fout,"-1");
    fclose(fout);
    return 0;
}