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