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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <array>
#include <ctime>
#include <cmath>

struct Runda {
    int numer;
    std::tm start;
    std::tm koniec;
};

std::time_t make_time(int dzien, int godzina, int minuta, int sekunda) {
    std::tm t = {};
    t.tm_year = 126; 
    t.tm_mon = 2;     
    t.tm_mday = dzien;
    t.tm_hour = godzina;
    t.tm_min = minuta;
    t.tm_sec = sekunda;
    t.tm_isdst = 0; 
    return std::mktime(&t);
}

int main() {
    int x, d, h, m;
    std::cin >> x >> d >> h >> m;

    std::array<Runda, 5> rundy = {{
        {1, {}, {}}, {2, {}, {}}, {3, {}, {}}, {4, {}, {}}, {5, {}, {}}
    }};

    int start_dni[] = {23, 24, 25, 26, 27};
    int koniec_dni[] = {24, 25, 26, 27, 29};
    for (int i = 0; i < 5; ++i) {
        std::tm ts = {};
        ts.tm_year = 126;
        ts.tm_mon = 2;
        ts.tm_mday = start_dni[i];
        ts.tm_hour = 12;
        ts.tm_min = 0;
        ts.tm_sec = 0;
        ts.tm_isdst = 0;
        rundy[i].start = ts;

        std::tm te = {};
        te.tm_year = 126;
        te.tm_mon = 2;
        te.tm_mday = koniec_dni[i];
        te.tm_hour = 23;
        te.tm_min = 59;
        te.tm_sec = 59;
        te.tm_isdst = 0;
         rundy[i].koniec = te;
    }

    std::time_t data_wczytana = make_time(d, h, m, 0);
    std::time_t data_konca = std::mktime(&rundy[x - 1].koniec);

    double roznica_sekundy = std::difftime(data_konca, data_wczytana);
    double roznica_minuty = roznica_sekundy / 60.0;
    long long wynik = static_cast<long long>(std::ceil(roznica_minuty));

    std::time_t prog = make_time(29, 2, 0, 0);
    if (x == 5 && data_wczytana < prog) {
        wynik -= 60;
    }

    std::cout << wynik << std::endl;

    return 0;
}