{"problem":{"name":"A. long long","description":{"content":"Вы наверняка знаете, что при решении задач (особенно на олимпиадах по программированию) нужно выбирать целочисленные типы данных с умом. Если используемый тип имеет слишком малый размер, при выполнени","description_type":"Markdown"},"platform":"Codeforces","limit":{"time_limit":2000,"memory_limit":262144},"difficulty":"None","is_remote":true,"is_sync":true,"sync_url":null,"sign":"CF10126A"},"statements":[{"statement_type":"Markdown","content":"Вы наверняка знаете, что при решении задач (особенно на олимпиадах по программированию) нужно выбирать целочисленные типы данных с умом. Если используемый тип имеет слишком малый размер, при выполнении арифметических операций может произойти переполнение, и тогда результат вычислений окажется неверным.\n\nМакс решает задачу, в которой требуется определить произведение целых чисел A и B. Любимый язык Макса — C++, а в этом языке самым ёмким целочисленным типом является long long — на компьютере Макса это 64-битное целое со знаком. 1 бит отводится на хранение знака числа, остальные 63 — на хранение самого числа; таким образом, максимальное значение, которое может иметь переменная типа long long, равно (263 - 1).\n\nВ своём решении Макс использовал long long везде, где только мог — для хранения чисел A, B и их произведения. Определите, действительно ли это поможет ему избежать переполнения.\n\nВвод содержит целые числа A и B (0 ≤ A, B ≤ (263 - 1)).\n\nВыведите YES, если при вычислении произведения (A·B) произойдёт переполнение типа long long. В противном случае выведите NO.\n\n## Входные Данные\n\nВвод содержит целые числа A и B (0 ≤ A, B ≤ (263 - 1)).\n\n## Выходные Данные\n\nВыведите YES, если при вычислении произведения (A·B) произойдёт переполнение типа long long. В противном случае выведите NO.\n\n## Примеры\n\nВходные данные1000000000 1000000000Выходные данныеNOВходные данные10000000000 10000000000Выходные данныеYES\n\n[samples]","is_translate":false,"language":"English"},{"statement_type":"Markdown","content":"**Definitions**  \nLet $ n \\in \\mathbb{Z}_{\\geq 0} $ be the initial number of shares.  \nLet $ m \\in \\mathbb{Z}_{\\geq 1} $ be the number of time moments.  \nLet $ A = (a_1, a_2, \\dots, a_m) \\in \\mathbb{Z}_{\\geq 1}^m $ be the agent buy prices.  \nLet $ B = (b_1, b_2, \\dots, b_m) \\in \\mathbb{Z}_{\\geq 1}^m $ be the exchange buy prices.  \n\nLet $ s_t \\in \\mathbb{Z}_{\\geq 0} $ be the number of shares owned at time $ t \\in \\{0, 1, \\dots, m\\} $, with $ s_0 = n $.  \nLet $ c_t \\in \\mathbb{Z}_{\\geq 0} $ be the cash owned at time $ t $, with $ c_0 = 0 $.  \n\nAt each time $ t \\in \\{1, \\dots, m\\} $, one of three actions is taken:  \n- **Sell (A)**: $ s_t = 0 $, $ c_t = c_{t-1} + s_{t-1} \\cdot a_t $  \n- **Buy (B)**: $ s_t = s_{t-1} + \\left\\lfloor \\frac{c_{t-1}}{b_t} \\right\\rfloor $, $ c_t = c_{t-1} \\bmod b_t $  \n- **Hold (0)**: $ s_t = s_{t-1} $, $ c_t = c_{t-1} $  \n\n**Constraints**  \n1. $ 1 \\leq n \\leq 10^9 $, $ 1 \\leq m \\leq 5 \\times 10^5 $  \n2. $ 1 \\leq a_j, b_j \\leq 10^9 $ for all $ j \\in \\{1, \\dots, m\\} $  \n3. $ s_t \\leq 10^{18} $, $ c_t \\leq 10^{18} $ for all $ t \\in \\{0, \\dots, m\\} $  \n\n**Objective**  \nMaximize final cash:  \n$$\n\\max c_m\n$$  \nand output a sequence $ x_1, x_2, \\dots, x_m \\in \\{A, B, 0\\} $ achieving this maximum.","is_translate":false,"language":"Formal"}],"meta":{"iden":"CF10126A","tags":[],"sample_group":[],"created_at":"2026-03-03 11:00:39"}}