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
43
44
#include <iostream>

using namespace std;

int main() {
    int x, d, h, m;
    // x - numer rundy, d - dzieñ, h - godzina, m - minuta
    if (!(cin >> x >> d >> h >> m)) return 0;

    // Ustalamy datê zakoñczenia rundy (dzieñ, godzina, minuta)
    int end_d, end_h = 24, end_m = 0;

    if (x >= 1 && x <= 4) {
        // Rundy 1-4 koñcz¹ siê "o pó³nocy" dnia d+1, d+2 itd. zgodnie z tabel¹
        // Wg tabeli: R1 koñczy siê 24.03, R2 - 25.03, R3 - 26.03, R4 - 27.03
        // Mo¿na to zapisaæ jako end_d = x + 23
        end_d = x + 23;
    } else {
        // Runda 5 koñczy siê 29 marca o 23:59:59 (przyjmujemy 24:00 dla u³atwienia obliczeñ minut)
        end_d = 29;
    }

    // Obliczamy ca³kowit¹ liczbê minut od pocz¹tku marca do momentu startu i koñca
    // Traktujemy ka¿dy dzieñ jako 24h (zmianê czasu uwzglêdnimy póŸniej)
    long long start_total_minutes = (long long)d * 24 * 60 + h * 60 + m;
    long long end_total_minutes = (long long)end_d * 24 * 60 + end_h * 60 + end_m;

    long long diff = end_total_minutes - start_total_minutes;

    // Uwzglêdnienie zmiany czasu:
    // Jeœli Bajtazar zacz¹³ przed 2:00 rano 29 marca, a runda koñczy siê po 2:00 rano 29 marca,
    // to "straci³" godzinê (60 minut), bo zegarki przesuniêto do przodu.

    // Moment zmiany czasu w minutach od pocz¹tku miesi¹ca:
    long long dst_change = 29LL * 24 * 60 + 2 * 60;

    if (start_total_minutes < dst_change && end_total_minutes > dst_change) {
        diff -= 60;
    }

    cout << diff << endl;

    return 0;
}