Questo il codice, e la logica è poca e a mio parere semplice
#include <bits/stdc++.h>
using namespace std;
int main() {
int N, K;
cin >> N >> K;
int somma = 0, media = 0;
vector<int> P(N);
for (int i = 0; i < N; ++i)
{
cin >> P[i];
somma += P[i];
}
media = somma/N;
int ans = 0;
int contatore = N-1;
sort(P.begin(), P.end());
if (media == K)
{
ans = 0;
}
else if (media < K)
{
ans = 1;
}
else
{
cerr << "entrato in media>K" << endl;
while (media > K)
{
media -= (P[contatore]-1)/N;
contatore--;
ans++;
}
}
cout << ans << endl;
return 0;
}
Ammeno che l’errore non sia nel come io mi comporto se la media è maggiore di quella da raggiungere, che è si il caso più difficile ma dovrebbe comunque essere banale (P[contatore]-1 perché il prezzo min è di 1 bytedollaro).
Grazie a tutti in anticipo.