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
#include <cstdio>
#include <cstdlib>
#include <cassert>

constexpr int to_minutes_since_whenever(int day, int hour, int minute) {
    int encoded = minute + 60 * hour + 24 * 60 * day;
    if (day > 29 || (day == 29 && hour >= 3)) {
        encoded -= 60;
    }
    return encoded;
}

// I'm rounding up the last second
static const int DATES_PER_ROUND[] = {
    to_minutes_since_whenever(25, 0, 0),
    to_minutes_since_whenever(26, 0, 0),
    to_minutes_since_whenever(27, 0, 0),
    to_minutes_since_whenever(28, 0, 0),
    to_minutes_since_whenever(30, 0, 0),
};

int main() {
    int x, d, h, m;
    scanf("%d %d %d %d", &x, &d, &h, &m);
    int minutes = DATES_PER_ROUND[x - 1] - to_minutes_since_whenever(d, h, m);
    printf("%d\n", minutes);

    return 0;
}