Cod sursa(job #1209560)

Utilizator grayshadeLaurentiu Nicola grayshade Data 18 iulie 2014 00:05:58
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.68 kb
#include <cstdio>
#include <unordered_map>
using namespace std;

int n, x;
unordered_map<int, int> aparitii;

int main() {
    freopen("elmaj.in", "r", stdin);
    freopen("elmaj.out", "w", stdout);

    int max = 0, ap = 0;

    scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
        scanf("%d", &x);
        int a = ++aparitii[x];
        //map<int, int>::iterator it = aparitii.find(x);
        //if (it != aparitii.end()) {
        //    it->second++;
        //}
        //else {
        //    aparitii.insert(pair<int, int>(x, 1));
        //    it = aparitii.find(x);
        //}
        if (ap < a) {
            ap = a;
            max = x;
        }
    }

    /*/
    for (map<int, int>::iterator it = aparitii.begin(); it != aparitii.end(); ++it) {
    if (ap < it->second) {
    ap = it->second;
    max = it->first;
    }
    }
    //*/

    if (ap > n / 2) {
        printf("%d %d\n", max, ap);
    }
    else {
        printf("-1 \n");
    }

    return 0;
}
/*
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    ifstream f("elmaj.in");
    vector<int> v;

    int votes = 0, candidate, n, k;
    f >> k;
    v.reserve(k);

    while (k-- > 0)
    {
        f >> n;
        v.push_back(n);

        if (votes == 0)
        {
            candidate = n;
            votes = 1;
        }
        else if (n == candidate)
            votes++;
        else
            votes--;
    }

    votes = 0;
    for (int i = 0; i < v.size(); i++)
        if (v[i] == candidate)
            votes++;

    ofstream of("elmaj.out");
    of << candidate << ' ' << votes << endl;
}
*/