Cod sursa(job #2823193)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 27 decembrie 2021 15:37:48
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

bool containsAtLeastKValuesLessOrEqual(vector<int>& v, const int& K, const int& THRESHOLD){
    int count = 0;
    for(int val: v){
        if(val <= THRESHOLD){
            count += 1;
        }
        if(count == K){
            return true;
        }
    }
    return false;
}

int main(){
    ifstream cin("sdo.in");
    ofstream cout("sdo.out");

    int n, k;
    cin >> n >> k;

    vector<int> v(n);
    for(int i = 0; i < n; ++i){
        cin >> v[i];
    }

    int minVal = v[0];
    int maxVal = v[0];
    for(int val: v){
        minVal = min(minVal, val);
        maxVal = max(maxVal, val);
    }

    int l = minVal;
    int r = maxVal;
    while(l != r){
        int mid = (l + r) / 2;
        if(containsAtLeastKValuesLessOrEqual(v, k, mid)){
            r = mid;
        }else{
            l = mid + 1;
        }
    }

    cout << r;

    cin.close();
    cout.close();
    return 0;
}