#include <iostream>
using namespace std;
// Funkcja zamieniająca dzień, godzinę i minutę na bezwzględną liczbę minut
// od umownego początku (d=0, h=0, m=0), z uwzględnieniem zmiany czasu.
int get_minutes(int d, int h, int m) {
int total_mins = d * 24 * 60 + h * 60 + m;
// Zmiana czasu z zimowego na letni: 29 marca o 2:00 w nocy zegarki są przestawiane na 3:00.
// Skutkuje to "zniknięciem" 60 minut. Dlatego dla każdego czasu po tej zmianie
// odejmujemy godzinę z liniowej osi czasu.
if (d > 29 || (d == 29 && h >= 3)) {
total_mins -= 60;
}
return total_mins;
}
int main() {
// Optymalizacja operacji wejścia/wyjścia (przydatna w zadaniach algorytmicznych)
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int x, d, h, m;
if (cin >> x >> d >> h >> m) {
// Tablica przechowująca dni zakończenia poszczególnych rund (indeksowana od 1).
// Koniec np. 24 marca o 23:59:59 traktujemy jako początek 25 marca o 00:00:00.
int end_days[] = {0, 25, 26, 27, 28, 30};
int end_d = end_days[x];
// Obliczamy czas startu i czas końca w minutach na osi czasu
int start_mins = get_minutes(d, h, m);
int end_mins = get_minutes(end_d, 0, 0);
// Wypisujemy pozostały czas
cout << end_mins - start_mins << "\n";
}
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 39 40 41 42 | #include <iostream> using namespace std; // Funkcja zamieniająca dzień, godzinę i minutę na bezwzględną liczbę minut // od umownego początku (d=0, h=0, m=0), z uwzględnieniem zmiany czasu. int get_minutes(int d, int h, int m) { int total_mins = d * 24 * 60 + h * 60 + m; // Zmiana czasu z zimowego na letni: 29 marca o 2:00 w nocy zegarki są przestawiane na 3:00. // Skutkuje to "zniknięciem" 60 minut. Dlatego dla każdego czasu po tej zmianie // odejmujemy godzinę z liniowej osi czasu. if (d > 29 || (d == 29 && h >= 3)) { total_mins -= 60; } return total_mins; } int main() { // Optymalizacja operacji wejścia/wyjścia (przydatna w zadaniach algorytmicznych) ios_base::sync_with_stdio(false); cin.tie(NULL); int x, d, h, m; if (cin >> x >> d >> h >> m) { // Tablica przechowująca dni zakończenia poszczególnych rund (indeksowana od 1). // Koniec np. 24 marca o 23:59:59 traktujemy jako początek 25 marca o 00:00:00. int end_days[] = {0, 25, 26, 27, 28, 30}; int end_d = end_days[x]; // Obliczamy czas startu i czas końca w minutach na osi czasu int start_mins = get_minutes(d, h, m); int end_mins = get_minutes(end_d, 0, 0); // Wypisujemy pozostały czas cout << end_mins - start_mins << "\n"; } return 0; } |
English