Помогите пожалуйста по программированию!
Помогите пожалуйста!
Кинотеатр
Ограничение по времени: 1
секунда
Ограничение по памяти: 256
мегабайт
Евгений насколько усердно боролся с компьютерным вирусом, что сам заболел, и, поскольку он не мог оставить работу, Евгений заразил всех своих коллег, которые заразили своих знакомых и так далее. В итоге весь ваш город оказался заражён. На фоне этой эпидемии власти ввели масочный режим, а в ваш любимый кинотеатр «Малина» теперь пускают только по электронному сертификату о прививке.
Сегодня вы решили сходить в ваш любимый кинотеатр. Подойдя ко входу в здание кинотеатра, вы встали в очередь, в которой вместе с вами находятся n
человек. В начале очереди у посетителей проверяют наличие сертификата о прививке. Подтверждение сертификата каждого посетителя занимает q
секунд, после чего человек отправляется в зал на показ фильма. Как и всегда, у входа в зал собралась очередь из m
человек с билетами, которые предстоит проверить контролёру. Проверка билета одного человека занимает t
секунд, после чего человек сразу же занимает место в кинозале.
Перерыв в кинотеатре закончится с минуты на минуту, после чего очереди двинутся, и в скором времени вы сможете посмотреть фильм. Но вас, как настоящего программиста, интересуют точные значения. Поэтому, пока перерыв не закончился, вам предлагается написать программу, которая по заданным значениям n
, q
, m
и t
посчитает, сколько секунд вам придется подождать после окончания перерыва, прежде чем вы окажетесь в кинозале.
Формат входных данных
Первая строка содержит одно целое число n
(1⩽n⩽109)
—
количество человек в первой очереди, считая вас.
Вторая строка содержит одно целое число q
(1⩽q⩽109)
—
время проверки сертификата.
Третья строка содержит одно целое число m
(1⩽m⩽109)
—
количество людей во второй очереди.
Четвёртая строка содержит одно целое число t
(1⩽t⩽109)
—
время проверки билета контролёром.
Формат выходных данных
Выведите одно целое число —
количество секунд, по истечении которых вы окажетесь в кинозале.
Система оценки
Решения, правильно работающие в ситуации, когда последнему человеку из первой очереди после прохода контроля сертификата не придётся ждать проверки во второй очереди, будут оцениваться в 50
баллов.
Решения, правильно работающие в ситуации, когда в момент прохода контроля сертификата последним человеком из первой очереди вторая очередь ещё не пуста, будут оцениваться в 50
баллов.
Замечание
Рассмотрим первый тестовый пример. В первой очереди стоят два человека, каждому из которых требуется одна секунда, чтобы перейти во вторую очередь. Во второй очереди стоят три человека, каждому из которых также требуется по секунде, чтобы выйти из очереди.
Таким образом, в первую секунду первый человек из первой очереди перейдёт во вторую очередь, а первый человек из второй покинет очередь. После чего во второй очереди останется три человека, а в первой—
один. По истечении второй секунды оставшийся в первой очереди человек перейдёт во вторую, а первый человек из второй очереди покинет её. Таким образом, во второй очереди останется три человека, а в первой уже никого не останется. После чего этим трём людям потребуется суммарно три секунды, чтобы пройти очередь. Поэтому ответ в данном случае —
пять секунд.
Обратите внимание, что ответы могут получиться достаточно большими, поэтому следует использовать 64
-битный тип данных, например long long в C/C++, long в Java, int64 в Free\Pascal.
вроде так:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
ll n, q, m, t; cin >> n >> q >> m >> t;
if (t >= q) {
cout << (n + m) * t << «\n»;
return 0;
скрипт не рабочий
вот работающий
#include <iostream>
int main() {
// Input the number of people in the first queue, time to check certificates, number of people in the second queue, and time to check tickets.
int n, q, m, t;
std::cin >> n >> q >> m >> t;
// Calculate the total time for the first queue to pass.
long long first_queue_time = 0;
if (n > 1) {
first_queue_time = 1LL * (n - 1) * q;
}
// Calculate the total time for the second queue to pass.
long long second_queue_time = 1LL * m * t;
// Calculate the total time to enter the cinema.
long long total_time = std::max(first_queue_time, second_queue_time);
std::cout << total_time << std::endl;
return 0;
}
#include <iostream>
int main() {
// Input the number of people in the first queue, time to check certificates, number of people in the second queue, and time to check tickets.
int n, q, m, t;
std::cin >> n >> q >> m >> t;
// Calculate the total time for the first queue to pass.
long long first_queue_time = 0;
if (n > 1) {
first_queue_time = 1LL * (n - 1) * q;
}
// Calculate the total time for the second queue to pass.
long long second_queue_time = 1LL * m * t;
// Calculate the total time to enter the cinema.
long long total_time = std::max(first_queue_time, second_queue_time);
std::cout << total_time << std::endl;
return 0;
}