Cod sursa(job #1439677)

Utilizator cristid9Cristi D cristid9 Data 22 mai 2015 22:55:36
Problema Elementul majoritar Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <map>
#include <tuple>

std::tuple<int, int> countUsingMap(int size, int* v)
{
    std::map<int, int> table;

    for(int i = 0; i < size; ++i)
    {
        if(table.find(v[i]) == table.end())
        {
            table.insert({v[i], 1});
        }
        else
        {
            table[v[i]]++;
        }
    }

    for(int i = 0; i < size; ++i)
    {
        if(table[v[i]] > size / 2)
        {
            auto result = std::make_tuple(v[i], table[v[i]]);
            return result;
        }
    }
    auto result = std::make_tuple(-1, -1);
    return result;
}

int main()
{
    std::ifstream fin("elmaj.in");
    std::ofstream fout("elmaj.out");

    int size;
    fin >> size;

    int* vector = new int[size];
    for(int i = 0; i < size; ++i)
    {
        fin >> vector[i];
    }

    auto result = countUsingMap(size, vector);

    fout << std::get<0>(result);
    fout << " ";
    if(std::get<0>(result) != -1)
        fout << std::get<1>(result);

    return 0;
}