#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;
}
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; } |
English