Cod sursa(job #3201927)

Utilizator fortyforBroscoi Mihai fortyfor Data 10 februarie 2024 09:56:42
Problema Elementul majoritar Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
#include <algorithm>
#include <cmath>
#include <climits>
#include <fstream>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <bitset>
std::vector<int> numbers;
std::ifstream fin ("elmaj.in");
std::ofstream fout ("elmaj.out");
int main()
{
    int n,x;
    fin >> n;
    for (int i=0;i<n;i++)
    {
        fin >> x;
        numbers.push_back(x);
    }
    std::nth_element(numbers.begin(),numbers.begin()+n/2,numbers.end());
    int m=numbers[n/2],k=n/2;
    do {
        k++;
        std::nth_element(numbers.begin(),numbers.begin()+k,numbers.end());
    } while(numbers[k]==m);
    int t=n/2;
    do {
        t--;
        std::nth_element(numbers.begin(),numbers.begin()+t,numbers.end());
    } while(numbers[t]==m);

    if ((k-t)>=(n/2+1)) {
        fout << m << ' ' << k-t-1;
    } else {
        fout << "-1";
    }
    return 0;
}