fbpx

Problema #3406 – AsEasyAsABC – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Fie N un număr întreg impar și un vector A cu N elemente. Pentru fiecare element Ai, acesta se poate incrementa cu 1. Fiecare element sepoate incrementa cel mult odată. Mai mult, se pot realiza cel mult K incrementări.

Scopul este de a maximiza medianul lui A. Medianul unui vector este definit ca fiind elementul din mijlocul vectorului după sortarea acestuia. De exemplu, medianul vectorului [5,8,2,9,1] este 5.

Date de intrare

Prima linie conține un număr impar N și un întreg K. Pe a doua linie se află N numere separate prin spații naturale, reprezentând elementele vectorului.

Date de ieșire

Programul va afișa pe ecran numărul ce reprezintă maximul posibil al medianului după aplicarea operațiilor de incrementare.

Restricții și precizări

  • 1 ≤ k ≤ n ≤ 1000, N e impar.
  • 1 ≤ Ai ≤ 1000.

Exemplu

Intrare

9 3
4 4 4 8 2 2 9 9 1

Ieșire

5

Explicație

Se pot incrementa elementele de pe pozițiile 1, 2 și 3. Valoarea comună reprezintă medianul maxim care se poate obține.

#include <bits/stdc++.h>

using namespace std;

int n, a[1001], k;

int main(){
    cin >> n >> k;
    for(int i = 1; i <= n; ++i)
        cin >> a[i];
    sort(a + 1, a + n + 1);
    for(int i = n/2+1; k && i <= n; ++i)
        a[i] ++, k--;
    sort(a + 1, a + n + 1);
    cout << a[n/2+1];
    return 0;
}
Comentarii

S-ar putea sa iti placa