Cod sursa(job #1508525)

Utilizator TopiAlexTopala Alexandru TopiAlex Data 22 octombrie 2015 18:03:41
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <stdio.h>
#define N_MAX 1000002
using namespace std;

FILE *f, *g;

int n;
int sir[N_MAX];

void citire();

int main()
{
    citire();

    int elem;
    int k;
    int i;
    int nr;

    elem = -1;
    k = 0;

    for (i = 0; i < n; ++i){
        if (k == 0){
            elem = sir[i];
            k = 1;
        }else if (elem == sir[i]){
            k++;
        }else{
            k--;
        }
    }

    if (elem == -1)
        fprintf(g, "-1\n");
    else{
        nr = 0;

        for (i = 0; i < n; ++i)
            if (sir[i] == elem)
                nr++;

        if (nr >= n/2 + 1)
            fprintf(g, "%d %d\n", elem, nr);
        else
            fprintf(g, "-1\n");
    }

    fclose(f);
    fclose(g);

    return 0;
}

void citire(){
    f = fopen("elmaj.in", "r");
    g = fopen("elmaj.out", "w");

    fscanf(f, "%d", &n);

    for (int i = 0; i < n; ++i)
        fscanf(f, "%d", &sir[i]);
}