J. Кормление крокодилов

Codeforces
IDCF10218J
Time2000ms
Memory256MB
Difficulty
English · Original
Formal · Original
В сафари-парке Вася увидел двух крокодилов, которых кормили туристы. Заметив, что один из крокодилов сильнее другого и съедает больше мяса, он решил восстановить справедливость. Для того чтобы покормить крокодилов, Вася купил цельный кусок мяса весом N килограммов. Он решил разрезать его на равное количество кусков размерами A и B килограммов, причём так, чтобы ничего лишнего не осталось. Вася планирует каждые K секунд бросать крокодилам один кусок мяса, чередуя размеры кусков. Самым первым он бросит кусок размером A. Крокодилы едят мясо по следующим правилам: Помогите Васе найти такие целые положительные A и B, чтобы модуль разности количества съеденного крокодилами мяса был минимальным. Учтите, что скорость поедания мяса каждым крокодилом составляет один килограмм в секунду. В единственной строке задаётся количество килограммов мяса N (2 ≤ N ≤ 109) и период бросания кусков K (1 ≤ K ≤ 109). Гарантируется, что N — *чётное* число. Все числа во входных данных целые. Размеры кусков A и B. Если существует несколько решений, выведите любое. В первом тесте при любых A и B сильный крокодил съедает всё мясо. Во втором тесте сильный крокодил хватает первый кусок, а слабому удаётся схватить второй, так как сильный в момент броска занят поеданием первого. Модуль разности количества съеденного мяса равен 0. ## Входные Данные В единственной строке задаётся количество килограммов мяса N (2 ≤ N ≤ 109) и период бросания кусков K (1 ≤ K ≤ 109). Гарантируется, что N — *чётное* число.Все числа во входных данных целые. ## Выходные Данные Размеры кусков A и B. Если существует несколько решений, выведите любое. ## Примеры Входные данные4 3Выходные данные1 3Входные данные4 1Выходные данные2 2 ## Примечание В первом тесте при любых A и B сильный крокодил съедает всё мясо.Во втором тесте сильный крокодил хватает первый кусок, а слабому удаётся схватить второй, так как сильный в момент броска занят поеданием первого. Модуль разности количества съеденного мяса равен 0. [samples]
**Definitions** Let $ N \in \mathbb{Z}^+ $ be the total weight of meat (even), and $ K \in \mathbb{Z}^+ $ be the time interval (in seconds) between meat drops. Let $ A, B \in \mathbb{Z}^+ $ be the sizes of the two types of meat pieces, to be determined. **Constraints** 1. $ A \neq B $ 2. There exist integers $ x, y \geq 0 $ such that $ xA + yB = N $ 3. The meat is dropped alternately: first $ A $, then $ B $, then $ A $, etc., every $ K $ seconds. 4. Each crocodile eats meat at 1 kg/s. 5. The first piece (size $ A $) is thrown to the stronger crocodile. **Objective** Minimize $ \left| E_A - E_B \right| $, where: - $ E_A $: total meat eaten by the crocodile that receives pieces of size $ A $, - $ E_B $: total meat eaten by the crocodile that receives pieces of size $ B $. The feeding process: - At times $ 0, K, 2K, 3K, \dots $, a piece is thrown. - Piece at time $ t = iK $ has size $ A $ if $ i $ is even, $ B $ if $ i $ is odd. - A crocodile starts eating a piece immediately upon receipt and eats continuously at 1 kg/s. - A crocodile can only eat one piece at a time; if a new piece is thrown while it is still eating, it must wait until it finishes the current one. Thus, the eating schedule is constrained by the timing of drops and the duration of eating each piece. **Goal:** Find integers $ A, B > 0 $ such that $ xA + yB = N $ for some $ x, y \in \mathbb{Z}_{\geq 0} $, and $ \left| E_A - E_B \right| $ is minimized.
API Response (JSON)
{
  "problem": {
    "name": "J. Кормление крокодилов",
    "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": "CF10218J"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "В сафари-парке Вася увидел двух крокодилов, которых кормили туристы. Заметив, что один из крокодилов сильнее другого и съедает больше мяса, он решил восстановить справедливость.\n\nДля того чтобы покорм...",
      "is_translate": false,
      "language": "English"
    },
    {
      "statement_type": "Markdown",
      "content": "**Definitions**  \nLet $ N \\in \\mathbb{Z}^+ $ be the total weight of meat (even), and $ K \\in \\mathbb{Z}^+ $ be the time interval (in seconds) between meat drops.  \nLet $ A, B \\in \\mathbb{Z}^+ $ be the...",
      "is_translate": false,
      "language": "Formal"
    }
  ]
}
Full JSON Raw Segments