Ciao a tutti, un mio amico ha scritto un programma in C/C++ in grado di soddisfare la richiesta del seguente testo. Sapreste spiegarmi le istruzioni che utilizzato nel "main"? Il codice si trova sotto il problema.
Grazie mille in anticipo.
Descrizione del problema
Al celebre maghetto Harry Potter è stata regalata una scopa volante modello Nimbus3000 e tutti i suoi compagni del Grifondoro gli chiedono di poterla provare. Il buon Harry ha promesso che nei giorni a venire soddisferà le richieste di tutti, ma ogni ragazzo è impaziente e vuole provare la scopa il giorno stesso. Ognuno propone ad Harry un intervallo di tempo della giornata durante il quale, essendo libero da lezioni di magia, può fare un giro sulla scopa, e per convincerlo gli offre una fantastica caramella Tuttigusti+1. Tenendo presente che una sola persona alla volta può salire sulla Nimbus3000 in ogni istante di tempo, Harry decide di soddisfare, tra tutte le richieste dei ragazzi, quelle che gli procureranno la massima quantità di caramelle (che poi spartirà coi suoi amici Ron e Hermione). Aiutalo a trovare la migliore soluzione possibile.
Dati di input
Il file input.txt contiene nella prima riga un intero positivo N, che indica il numero di richieste, che sono numerate da 1 a N. Ognuna delle successive N righe contiene una coppia di interi. Ciascuna di tali righe contiene una coppia di interi positivi A e B, separati da uno spazio, a rappresentare la richiesta di poter utilizzare la scopa dall'istante iniziale A fino all'istante finale B, in cambio di una caramella (dove A < B). A tal fine, il tempo è diviso in istanti discreti numerati a partire da 1 in poi.
Dati di output
Il file output.txt è composto da una riga contenente un solo intero, che rappresenta il massimo numero di caramelle che Harry può ottenere.
Assunzioni
- 1 < N < 1000
- Gli interi nelle N coppie sono distinti l'uno dall'altro (non esistono due interi uguali, anche in coppie diverse)
Esempi di input/output
File input.txt |
File output.txt |
5
1 5
3 7
9 11
10 12
6 13 |
2 |
codice:
#include <stdio.h>
#include <stdlib.h>
int minimo(int *array, int len)
{
int i, min=0;
for (i=0; i<len; i++)
{
if (array[i]<array[i+1])
min=array[i];
}
return min;
}
int main(int argc, char** argv)
{
int *array;
FILE *input=fopen("input.txt", "r");
FILE *output=fopen("output.txt", "w");
int i, m;
int tmp1, tmp2;
fscanf(input, "%d", &m);
array=(int*)malloc(m*sizeof(int*));
for (i=0; i<=m; i++)
{
fscanf(input, "%d %d", &tmp1, &tmp2);
array[i]=tmp2-tmp1;
}
fprintf(output, "%d", minimo(array, m));
fclose(input);
fclose(output);
return 0;
}