1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>

using namespace std;

// Funkcja zamieniająca dzień, godzinę i minutę na bezwzględną liczbę minut
// od umownego początku (d=0, h=0, m=0), z uwzględnieniem zmiany czasu.
int get_minutes(int d, int h, int m) {
    int total_mins = d * 24 * 60 + h * 60 + m;
    
    // Zmiana czasu z zimowego na letni: 29 marca o 2:00 w nocy zegarki są przestawiane na 3:00.
    // Skutkuje to "zniknięciem" 60 minut. Dlatego dla każdego czasu po tej zmianie
    // odejmujemy godzinę z liniowej osi czasu.
    if (d > 29 || (d == 29 && h >= 3)) {
        total_mins -= 60;
    }
    
    return total_mins;
}

int main() {
    // Optymalizacja operacji wejścia/wyjścia (przydatna w zadaniach algorytmicznych)
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int x, d, h, m;
    if (cin >> x >> d >> h >> m) {
        // Tablica przechowująca dni zakończenia poszczególnych rund (indeksowana od 1).
        // Koniec np. 24 marca o 23:59:59 traktujemy jako początek 25 marca o 00:00:00.
        int end_days[] = {0, 25, 26, 27, 28, 30};
        
        int end_d = end_days[x];
        
        // Obliczamy czas startu i czas końca w minutach na osi czasu
        int start_mins = get_minutes(d, h, m);
        int end_mins = get_minutes(end_d, 0, 0);
        
        // Wypisujemy pozostały czas
        cout << end_mins - start_mins << "\n";
    }

    return 0;
}