Cod sursa(job #2786663)

Utilizator qubitrubbitQubit Rubbit qubitrubbit Data 21 octombrie 2021 13:54:59
Problema Elementul majoritar Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <map>
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)
{
    map<int, int> freq;
    for (int i = 0; i < n; ++i)
    {
        if (!mapCointains(freq, a[i]))
        {
            freq[a[i]] = 0;
        }
        ++freq[a[i]];
        if (freq[a[i]] >= (n / 2) + 1)
        {
            return {a[i], freq[a[i]]};
        }
    }
    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;
}