Cod sursa(job #1289784)

Utilizator cdascaluDascalu Cristian cdascalu Data 10 decembrie 2014 12:07:01
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;

void read_data(int &N, vector<int> &vec)
{
    ifstream f("elmaj.in");
    f>>N;
    vec.resize(N);
    for(int i=1; i <= N;++i)
        f>>vec[i-1];

    f.close();
}

void solve(const vector<int> &vec, int &count, int &sol)
{
    sol = vec[0];
    int times = 1;
    for(int i=1; i < vec.size(); ++i)
    {
        if(vec[i] != sol)
        {
            --times;
            if(times == 0)
            {
                sol = vec[i];
                times = 1;
            }
        } else
            ++times;
    }

    count = 0;
    for(int i=0; i < vec.size(); ++i)
        count += (vec[i] == sol);

    if(count <= vec.size()/2)
        sol = -1;
}
int main()
{
    int N;
    vector<int> vec;
    read_data(N, vec);

    int sol, count;
    solve(vec, count, sol);

    ofstream g("elmaj.out");
    if(sol == -1)
        g<<"-1\n";
    else
        g<<sol<<" "<<count<<"\n";
    g.close();
    return 0;
}