Cod sursa(job #950229)

Utilizator costinbanuCostin Banu costinbanu Data 16 mai 2013 12:01:04
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
using namespace std;

int a[1000001], n, k, c, nr, ok;

int main(){
    FILE *in = fopen("elmaj.in", "r"), *out = fopen("elmaj.out", "w");
    if (in && out){
        fscanf(in, "%d\n", &n);
        for(int i = 0; i < n; i++)
            fscanf(in, "%d ", &a[i]);
        for (int i = 0; i < n; i++) {
            if (k == 0) c = a[i], k = 1;
            else if (a[i] == c) k++;
                else k--;
        }
        ok = 1;
        if (c == 0) ok = 0;
        else {
            for (int i = 0; i < n; i++)
                if (a[i] == c) nr++;
            if (nr < n / 2 + 1) ok = 0;
        }
        if (!ok) fprintf(out, "-1");
        else fprintf(out, "%d %d", c, nr);
        fclose(in), fclose(out);
    }
    return 0;
}