C’è un errore di spelling nella riga freopen("imput.txt", "r", stdin);
“imput.txt” dovrebbe essere “input.txt”.
Non stai leggendo gli intervalli dal file di input (in altre parole, non stai inizializzando disponibilita).
La riga int day=disponibilita[i+1].second; non fa quello che credi, cioè aggiornare il valore della variabile day dichiarata in precedenza. Invece, quello che succede è che viene creata e inizializzata una nuova variabile day – diversa dalla precedente – che esiste soltanto nello scope dell’if in cui l’hai dichiarata. Cioè, questa variabile smette di esistere non appena esci dall’if. In particolare, il valore della “vera” variabile day resta quello di prima. Per fixare, basta rimuovere int.
Per finire, ti consiglio di stampare sempre un newline alla fine dell’output. Non dovrebbe essere necessario, ma è buona pratica.
Detto questo, non ho controllato la correttezza dell’algoritmo, ma se hai altre domande chiedi pure.