Cod sursa(job #2786664)

Utilizator qubitrubbitQubit Rubbit qubitrubbit Data 21 octombrie 2021 13:58:33
Problema Elementul majoritar Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <map>
#include <algorithm>
using namespace std;

ifstream fin("elmaj.in");
ofstream fout("elmaj.out");

bool mapCointains(map<int, int> m, int a)
{
    return m.find(a) != m.end();
}

pair<int, int> getMostFrequent(int a[], int n)
{
    sort(a, a + n);
    int result = a[0];
    int maxCount = 1;
    int cnt = 1;
    int last = a[0];
    for (int i = 1; i < n; ++i)
    {
        if (last == a[i])
        {
            ++cnt;
        }
        else
        {
            if (maxCount < cnt)
            {
                result = last;
                maxCount = cnt;
            }
            cnt = 1;
            last = a[i];
        }
    }
    if (maxCount < cnt)
    {
        result = last;
        maxCount = cnt;
    }
    if (maxCount >= n / 2 + 1)
    {
        return {result, maxCount};
    }
    return {-1, -1};
}

int n;
int main()
{
    fin >> n;
    int a[n];
    for (int i = 0; i < n; ++i)
    {
        fin >> a[i];
    }
    pair<int, int> result = getMostFrequent(a, n);
    if (result.first == -1)
    {
        fout << -1;
    }
    else
    {
        fout << result.first << " " << result.second;
    }
    return 0;
}