Cod sursa(job #2692823)

Utilizator SerbaP123Popescu Serban SerbaP123 Data 3 ianuarie 2021 21:00:12
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
/// complexitate(n * log(n))
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

ifstream cin("elmaj.in");
ofstream cout("elmaj.out");

int main(){
    vector <int> v;
    int elementsVector, number;
    cin >> number;
    bool found = false;
    for(int i = 1; i <= number; ++i){
        cin >> elementsVector;
        v.push_back(elementsVector);
    }
    sort(v.begin(), v.end());
    int countElementMajoritar = 0, elementMajoritar, maxCountElementMajoritar = 0, firstNumber = v[0];
    for(auto it = v.begin(); it < v.end(); ++it){
        if(firstNumber == *it){
            countElementMajoritar++;
        }
        if(countElementMajoritar > maxCountElementMajoritar){
            maxCountElementMajoritar = countElementMajoritar;
        }
        if(firstNumber != *it){
            firstNumber = *it;
            countElementMajoritar = 1;
        }
        if(maxCountElementMajoritar >= number / 2 + 1 && !found){
            elementMajoritar = *it;
            found = true;
        }
    }
    if(elementMajoritar){
        cout << elementMajoritar << " " << maxCountElementMajoritar;
    }
    else{
        cout << -1;
    }
    return 0;
}