#include <iostream>
using namespace std;
int main() {
long long x, d, h, m;
if (!(cin >> x >> d >> h >> m)) return 0;
// 1. Obliczamy dzień zakończenia rundy
int dzien_konca = (x == 5) ? 29 : (x + 23);
// 2. Liczymy ile minut upłynęło od początku marca do momentu STARTU
// Doba ma 1440 minut
long long start_minuty = d * 1440 + h * 60 + m;
// 3. Liczymy ile minut upłynęło od początku marca do momentu KONCA
// Koniec jest zawsze o 23:59:59, czyli traktujemy to jako pełną dobę (24:00)
long long koniec_minuty = dzien_konca * 1440 + 24 * 60;
// 4. Obliczamy różnicę
long long wynik = koniec_minuty - start_minuty;
// 5. Korekta o zmianę czasu (skrócenie rundy o 60 min)
// Zmiana czasu następuje między 28 marca a końcem 29 marca.
// Jeśli runda trwa przez noc z 28 na 29 marca, odejmij 60 minut.
// Warunek: runda kończy się 29 marca (czyli x=5 lub runda 4 zaczęta 27.03),
// a start był PRZED godziną 2:00 w nocy 29 marca.
bool runda_obejmuje_zmiane = (dzien_konca == 29);
bool start_przed_zmiana = (d < 29 || (d == 29 && h < 2));
if (runda_obejmuje_zmiane && start_przed_zmiana) {
wynik -= 60;
}
cout << wynik;
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 30 31 32 33 34 35 36 37 38 | #include <iostream> using namespace std; int main() { long long x, d, h, m; if (!(cin >> x >> d >> h >> m)) return 0; // 1. Obliczamy dzień zakończenia rundy int dzien_konca = (x == 5) ? 29 : (x + 23); // 2. Liczymy ile minut upłynęło od początku marca do momentu STARTU // Doba ma 1440 minut long long start_minuty = d * 1440 + h * 60 + m; // 3. Liczymy ile minut upłynęło od początku marca do momentu KONCA // Koniec jest zawsze o 23:59:59, czyli traktujemy to jako pełną dobę (24:00) long long koniec_minuty = dzien_konca * 1440 + 24 * 60; // 4. Obliczamy różnicę long long wynik = koniec_minuty - start_minuty; // 5. Korekta o zmianę czasu (skrócenie rundy o 60 min) // Zmiana czasu następuje między 28 marca a końcem 29 marca. // Jeśli runda trwa przez noc z 28 na 29 marca, odejmij 60 minut. // Warunek: runda kończy się 29 marca (czyli x=5 lub runda 4 zaczęta 27.03), // a start był PRZED godziną 2:00 w nocy 29 marca. bool runda_obejmuje_zmiane = (dzien_konca == 29); bool start_przed_zmiana = (d < 29 || (d == 29 && h < 2)); if (runda_obejmuje_zmiane && start_przed_zmiana) { wynik -= 60; } cout << wynik; return 0; } |
English