La biblioteca degli smemorati

La vostra biblioteca rionale ha qualche problema nello stabilire da quanto tempo gli utenti tengono i libri.
Dovete aiutarli scrivendo un programma che, prese in input due date del 2001, stabilisca quanti giorni intercorrono tra le due date.

Dati in input

Il file input.txt è formato da una riga che contiene la data iniziale e la data finale del prestito.
Più precisamente, la riga contiene quattro interi: la prima coppia specifica la data iniziale, la seconda la data finale.
Ogni data è formata da due numeri, e cioè il giorno del mese e il numero del mese.

Dati in output

Il programma, dopo aver letto il file di input, deve stabilire quanti giorni intercorrono tra le due date, e scrivere il numero di giorni su un file di nome output.txt.

Più precisamente, il file output.txt deve contenere un’unica riga.
Su questa riga dovrà comparire il numero intero corrispondente ai giorni che intercorrono tra le due date in input.

Assunzioni

  1. Il file di input non contiene altri caratteri oltre a quelli precisati.
  2. Trenta giorni a novembre, con april, giugno e settembre; di ventotto ce n’è uno: tutti gli altri ne han trentuno.
  3. La seconda data non precede mai la prima.
  4. Il numero di giorni considerato non comprende quello iniziale: quindi, ad esempio, tra il 2 gennaio e il 2 gennaio intercorrono 0 giorni, tra il 30 gennaio e il 2 febbraio intercorrono tre giorni, e così via.
  5. Importante! Il programma non deve scrivere nulla sul video, e non deve interagire con l’utente. Deve solo leggere il file di input e scrivere il file di output.
  6. L’esecuzione del programma deve terminare entro 5 secondi.

Esempi

input.txt output.txt
1 2 3 2 3 0
2 30 1 2 2 3
3 1 5 2 7 62

Program OII_2001_La_biblioteca_degli_smemorati;
Const
    GIORNI : array[1..12] of Integer = (31,28,31,30,31,30,31,31,30,31,30,31);
Var
    g1, m1,
    g2, m2,
    i,
    distanza: Integer;
    fileIN,
    fileOUT : Text;
begin
    Assign(fileIN, 'input.txt');
    Reset(fileIN);
    Read(fileIN, g1, m1, g2, m2);
    Close(fileIN);

    if(m1 = m2) then
        begin
            distanza:=g2-g1;
        end
    else
        begin
            distanza:=(GIORNI[m1]-g1);
            for i:=m1+1 to m2-1 do
                Inc(distanza, GIORNI[i]);
            Inc(distanza, g2);
        end;

    Assign(fileOUT, 'output.txt');
    Rewrite(fileOUT);
    Write(fileOUT, distanza);
    Close(fileOUT);
end.