Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python 3 Серверы

Ратмир Сабиров Ученик (85), на голосовании 1 год назад
Серверы

Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Школьный этап всемарсианской олимпиады по информатике проводится на лучшей тестирующей системе. Однако участникам неизвестно, как устроена система внутри. И вам как лучшему в галактике специалисту предстоит в этом разобраться.
Тестирующая система располагается на n(n+1)2+1 серверах, пронумерованных целыми числами от 1 до n(n+1)2+1. Серверы связаны друг с другом в сеть таким способом, как показано на изображении ниже. Прямоугольниками обозначены серверы, для каждого сервера указан его номер. Линиями указаны кабели, соединяющие серверы.

Главный сервер системы имеет номер 1. Остальные серверы соединены в n цепочек при помощи кабелей. Первая цепочка состоит из n серверов с номерами от 2 до n+1. Вторая цепочка состоит из n−1 серверов с номерами от n+2 до 2n. Третья цепочка состоит из n−2 серверов с номерами от 2n+1 до 3n−2. И так далее. Последняя цепочка состоит из одного сервера с номером n(n+1)2+1. Серверы в каждой цепочке соединены друг с другом, как показано на иллюстрации. Главный сервер соединён с первым сервером каждой цепочки.
Когда участник отправляет решение задачи на проверку, оно поступает на главный сервер. После этого происходит следующий процесс: сначала главный сервер тратит a секунд на подготовку данных, после чего мгновенно отправляет их первому серверу первой цепочки (то есть серверу с номером 2). Затем главный сервер тратит ещё a секунд на подготовку данных, после чего мгновенно отправляет их первому серверу второй цепочки (то есть серверу с номером n+2). И так далее до тех пор, пока главный сервер не отправит последнее сообщение, которое адресовано первому серверу n-й цепочки.
Каждый из серверов, кроме главного, работает следующим образом: после получения сообщения сервер тратит b секунд на обработку данных, после чего мгновенно передает их следующему серверу в цепочке. Когда данные доходят до последнего сервера цепочки, он тратит b секунд на их обработку, после чего мгновенно передает их предпоследнему серверу в цепочке. После этого данные начинают передаваться между серверами по направлению к началу цепочки таким же образом, каким они передавались ранее (каждый сервер тратит b секунд на обработку данных, после чего передает их предыдущему серверу по цепочке).
Наконец, когда данные проходят по всей цепочке серверов и попадают на первый сервер цепочки, он тратит a секунд на обработку данных и передаёт их на главный сервер. После этого работа данной цепочки серверов прекращается.
Как видите, на Марсе процесс проверки решения участника является достаточно сложной задачей. Вам предстоит вычислить, через сколько времени главный сервер получит обработанные данные от первых серверов всех цепочек. Считайте, что главный сервер получил решение на проверку в момент времени 0.
Формат входных данных

Первая строка содержит одно целое число n (1⩽n⩽109) — количество цепочек серверов.
Вторая строка содержит одно целое число a (1⩽a⩽109) — количество секунд, которое тратит на обработку данных главный сервер.
Третья строка содержит одно целое число b (1⩽b⩽109) — количество секунд, которое тратят на обработку данных остальные серверы.
Формат выходных данных

Выведите одно целое число — количество секунд после приёма решения на проверку, после которых главный сервер получит обработанные данные от первых серверов всех цепочек.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
Система оценки

В этой задаче, помимо тестов из условия, есть 20 тестов. Каждый из них оценивается в 5 баллов. Решения, правильно работающие при n⩽105, будут
Голосование за лучший ответ
Похожие вопросы