Cod sursa(job #2894060)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 27 aprilie 2022 10:28:53
Problema Elementul majoritar Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <cstdio>
#include <algorithm>

using namespace std;
FILE *fin, *fout;

#define NMAX 1000000
int v[NMAX + 5];

bool verif(int fr, int len)
{
    if(fr >= len / 2 + 1)
        return true;

    return false;
}

int main()
{
    fin = fopen("elmaj.in", "r");
    fout = fopen("elmaj.out", "w");

    int n;
    fscanf(fin, "%d", &n);
    int i;
    for(i = 1; i <= n; i++)
        fscanf(fin, "%d", &v[i]);

    sort(v + 1, v + n + 1);

    /*for(i = 1; i <= n; i++)
        fprintf(fout, "%d ", v[i]);
    fprintf(fout, "\n");*/

    int j, len, el, maxim = 0;

    for(i = 1; i <= n; i++)
    {
        j = i;

        while(j <= n and v[j] == v[i])
            j++;

        //fprintf(fout, "%d %d\n", i, j);
        len = j - i;

        if(len > maxim)
        {
            maxim = len;

            el = v[i];
        }

        i = j - 1;
    }

    if(verif(maxim, n))
        fprintf(fout, "%d %d", el, maxim);
    else fprintf(fout, "-1");

    fclose(fin);
    fclose(fout);
    return 0;
}