#include<stdio.h>
//#include<stdlib.h>
#define durata 0
#define scadenza 1
#define usati 0
#define fatte 1
int main() {
FILE *f = fopen("input.txt", "r");
int N;
fscanf(f, "%d", &N);
int missioni[100][2];
for (int i = 0; i < N; ++i)
for (int j = 0; j < 2; ++j)
fscanf(f, "%d", &missioni[i][j]);
fclose(f);
int sol[100][2];
sol[0][usati] = missioni[0][durata];
sol[0][fatte] = 1;
for (int i = 1; i < N; ++i)
for (int j = 0; j < 2; ++j)
sol[i][j] = 0;
for (int i = 1; i < N; ++i)
for (int j = 0; j < i; ++j)
if (sol[j][usati] + missioni[i][durata] <= missioni[i][scadenza] && sol[j][fatte] + 1 > sol[i][fatte] ||
sol[j][fatte] + 1 == sol[i][fatte] && sol[j][usati] + missioni[i][durata] < sol[i][usati]){
//printf("Aggiorno (i = %d, j = %d)\n", i, j);
//printf("%d + %d <= %d && %d + 1 > %d || %d + 1 == %d && %d + %d < %d\n", sol[j][usati], missioni[i][durata], missioni[i][scadenza], sol[j][fatte], sol[i][fatte],
//sol[j][fatte], sol[i][fatte], sol[j][usati], missioni[i][durata], sol[i][usati]);
sol[i][usati] = sol[j][usati] + missioni[i][durata];
sol[i][fatte] = sol[j][fatte] + 1;
}
f = fopen("output.txt", "w");
fprintf(f, "%d", sol[N - 1][fatte]);
fclose(f);
//system("PAUSE");
return 0;
}
Codice in C.
Funzionano il testcase 2 e l’esempio proposto dal testo (non so se siano gli stessi).
Nel restante 90% dei casi mi dà “output errato”.
Grazie in anticipo!