#include <cstdio> #include <cstdint> #include <cinttypes> #include <vector> #include <algorithm> int main(int argc, char const *argv[]) { uint32_t clients_count; scanf("%" PRIu32, &clients_count); uint32_t ovens_count; scanf("%" PRIu32, &ovens_count); std::vector<uint64_t> clients_arrivals; clients_arrivals.reserve(clients_count); while (clients_count--) { uint64_t tmp; scanf("%" PRIu64, &tmp); clients_arrivals.push_back(tmp); } std::vector<uint64_t> baking_durations; baking_durations.reserve(ovens_count); while (ovens_count--) { uint64_t tmp; scanf("%" PRIu64, &tmp); baking_durations.push_back(tmp); } for (const auto &baking_duration : baking_durations) { uint64_t wait_acc_time = 0; uint64_t prev_served_time = 0; for (const auto &client_arrival : clients_arrivals) { auto earliest_possible_serve_time = prev_served_time + baking_duration; if (earliest_possible_serve_time > client_arrival) { wait_acc_time += earliest_possible_serve_time - client_arrival; prev_served_time = earliest_possible_serve_time; } else { prev_served_time = client_arrival; } } printf("%" PRIu64 "\n", wait_acc_time); } 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 | #include <cstdio> #include <cstdint> #include <cinttypes> #include <vector> #include <algorithm> int main(int argc, char const *argv[]) { uint32_t clients_count; scanf("%" PRIu32, &clients_count); uint32_t ovens_count; scanf("%" PRIu32, &ovens_count); std::vector<uint64_t> clients_arrivals; clients_arrivals.reserve(clients_count); while (clients_count--) { uint64_t tmp; scanf("%" PRIu64, &tmp); clients_arrivals.push_back(tmp); } std::vector<uint64_t> baking_durations; baking_durations.reserve(ovens_count); while (ovens_count--) { uint64_t tmp; scanf("%" PRIu64, &tmp); baking_durations.push_back(tmp); } for (const auto &baking_duration : baking_durations) { uint64_t wait_acc_time = 0; uint64_t prev_served_time = 0; for (const auto &client_arrival : clients_arrivals) { auto earliest_possible_serve_time = prev_served_time + baking_duration; if (earliest_possible_serve_time > client_arrival) { wait_acc_time += earliest_possible_serve_time - client_arrival; prev_served_time = earliest_possible_serve_time; } else { prev_served_time = client_arrival; } } printf("%" PRIu64 "\n", wait_acc_time); } return 0; } |