Cod sursa(job #1881906)

Utilizator gabib97Gabriel Boroghina gabib97 Data 16 februarie 2017 20:29:17
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

using namespace std;

int n, i, x, l, j, elmaj, freq, v[1000001];
char *b;

int main()
{
    freopen("elmaj.in", "r", stdin);
    freopen("elmaj.out", "w", stdout);
    fseek(stdin, 0, SEEK_END);
    l = ftell(stdin);
    rewind(stdin);
    b = (char *) malloc(l * sizeof(char));
    fread(b, sizeof(char), l, stdin);

    for (j = 0; isdigit(b[j]); j++) n = n * 10 + b[j] - '0';

    for (++j; isdigit(b[j]); j++) v[0] = v[0] * 10 + b[j] - '0';
    elmaj = v[0];
    freq = 1;
    for (i = 1; i < n; i++) {
        for (++j; isdigit(b[j]); j++) v[i] = v[i] * 10 + b[j] - '0';

        if (v[i] == elmaj) freq++;
        else freq--;
        if (freq == 0) elmaj = v[i], freq = 1;
    }
    freq = 0;
    for (i = 0; i < n; i++)
        if (v[i] == elmaj) freq++;
    if (freq >= n / 2 + 1)
        printf("%i %i", elmaj, freq);
    else printf("-1");
    fclose(stdin);
    fclose(stdout);
    return 0;
}