Світський прийом#9061

Світський прийом (Розбір)

Джонні Інгліш і Боф досягають кінцевої точки одночасно за час . Джонні Інгліш долає відстань s_1 = p \cdot t, а Боф s_2 = q \cdot t. Співвідношення пройдених відстаней дорівнює співвідношенню швидкостей: s_1 / s_2 = p / q.

Побудуємо такі шляхи конструктивно. Розглянемо, наприклад, маршрут з точок: (0, 0) → (2q, 0) → (2q, p - q) → (2q, 0). Тут обрано координату p - q, щоб її значення було невід’ємним (за умовою задачі q \le p).

Якщо швидкості Джонні Інгліша і Бофа однакові, то точки (2q, 0) і (2q, p - q) збігаються, а за умовою задачі на маршруті не може бути двох однакових точок підряд. У такому разі як рішення можна обрати, наприклад, наступний маршрут: (0, 0) → (1, 0).

Реалізація алгоритму

Зчитуємо вхідні дані.

scanf("%d %d", &q, &p);

Якщо швидкості Джонні Інгліша і Бофа однакові, то вони рухаються з точки у точку .

if (q == p)
{
  printf("2\n");
  printf("%d %d\n", 0, 0);
  printf("%d %d\n", 1, 0);
  return 0;
}

Якщо p \ne q, то маршрут складається з чотирьох точок.

printf("4\n");
printf("%d %d\n", 0, 0);
printf("%d %d\n", 2 * q, 0);
printf("%d %d\n", 2 * q, p - q);
printf("%d %d\n", 2 * q, 0);