Cerința
Fie N
un număr întreg impar și un vector A
cu N
elemente. Pentru fiecare element A
i
, 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 ≤ A
i
≤ 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.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema AsEasyAsABC:
#include <bits/stdc++.h>
#define nmax 1005
using namespace std;
int n, k, a[nmax], mid, req;
int main()
{
cin>>n>>k;
assert(1 <= n && n <= 1000);
assert(1 <= k && k <= 1000);
for (int i=1;i<=n;++i){
cin>>a[i];
assert(1 <= a[i] && a[i] <= 1000);
}
sort(a+1,a+n+1);
mid = a[n/2+1];
int act = n/2+1;
while (act <= n && a[act] == mid){
++req, ++act;
}
if (req > k){
cout<<mid<<'\n';
} else {
cout<<mid+1<<'\n';
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3406 AsEasyAsABC
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3406 AsEasyAsABC de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!