Ciao a tutti!
Vi chiedo un aiuto con questo problema: “Episodio I: un acquisto difficile (acquisti)” aka “oii_acquisti”.
Per qualche centesimo di secondo non passo tutti i test, ma ottengo execution timed out.
Sono abbastanza sicuro che logicamente la funzione sia corretta, non sò però come ottimizzare la sua velocità.
Ecco il codice:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<long long> calcola(int T, int M, vector<long long> S, vector<long long> P) {
vector<long long> result(M, 0);
for (int suitecase = 0; suitecase < M; suitecase++) {
long long toReach = P[suitecase];
for (int i = 0; i < T; i++) {
long long xi;
if (i == 0) {
xi = S[i];
} else {
if (toReach / i >= 0)
xi = min(S[i], toReach / i);
else
break;
}
result[suitecase] += xi;
toReach -= xi * i;
}
}
return result;
}