Buonasera,
stavo provando a fare Missioni per cercare di comprendere meglio e applicare la programmazione dinamica, ma mi trovo bloccato a 60/100 e non capisco cosa sbaglio nel ragionamento. In particolare non vengono i testcase 1,6,7 e 8.
Qualche anima gentile saprebbe indicarmi dove sto sbagliando?
Grazie
int main() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int N;
cin >> N;
vector<int> durata(N), scadenza(N);
for(int i = 0; i < N; i++)
cin >> durata[i] >> scadenza[i];
vector<int> soluzioni(N), dataConclusione(N);
soluzioni[0] = 1;
dataConclusione[0] = durata[0];
for(int j = 1; j < N; j++) {
soluzioni[j] = 1;
for(int i = 0; i < j; i++) {
if(scadenza[j] - durata[j] >= dataConclusione[i]) {
if(soluzioni[i] + 1 > soluzioni[j]) {
soluzioni[j] = soluzioni[i] + 1;
dataConclusione[j] = dataConclusione[i] + durata[j];
} else if(soluzioni[i] + 1 == soluzioni[j] && dataConclusione[j] > dataConclusione[i])
dataConclusione[i] = dataConclusione[j];
}
}
}
cout << *max_element(soluzioni.begin(), soluzioni.end());
return 0; }