Cod sursa(job #3313259)

Utilizator valeriuionutiocsaValeriu Ionut Iocsa valeriuionutiocsa Data 2 octombrie 2025 23:58:23
Problema Elementul majoritar Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.39 kb
// http://www.infoarena.ro/problema/elmaj

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define INPUT_FILE "elmaj.in"
#define OUTPUT_FILE "elmaj.out"

int main()
{
    FILE *in = NULL;
    if ((in = fopen(INPUT_FILE, "r")) == NULL)
    {
        fprintf(stderr, "failed to open input file %s\n", INPUT_FILE);
        exit(-1);
    }

    int n = 0;
    fscanf(in, "%d", &n);

    int *v = (int *)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++)
    {
        fscanf(in, "%d", &v[i]);
    }

    int k = 0;
    int candidate = 0;
    for (int i = 0; i < n; i++)
    {
        if (k == 0)
        {
            candidate = v[i];
            k = 1;
        }
        else if (v[i] == candidate)
        {
            k++;
        }
        else
        {
            k--;
        }
    }

    int count = 0;
    for (int i = 0; i < n; i++)
    {
        if (v[i] == candidate)
        {
            count++;
        }
    }
    if (count <= n / 2)
    {
        candidate = -1;
    }

    FILE *out = NULL;
    if ((out = fopen(OUTPUT_FILE, "w")) == NULL)
    {
        fprintf(stderr, "failed to open output file %s\n", OUTPUT_FILE);
        exit(-2);
    }

    if (candidate >= 0)
    {
        fprintf(out, "%d %d", candidate, count);
    }
    else
    {
        fprintf(out, "-1");
    }
    fclose(out);

    return 0;
}