eolymp
bolt
Try our new interface for solving problems
Məsələlər

Гонки на колесницах

Гонки на колесницах

Как-то раз судьба привела Кратоса на колесничные бега, и он решил испытать удачу, поставив несколько монет на исход заезда. Разумеется, просто так тратить деньги воин не собирается, и поэтому он твердо решил, что сделает ставку только в том случае, если сможет остаться в выигрыше при любом исходе состязаний.

Кратос решил потратить на ставку n монет: какую-то часть из них он поставит на победу выбранного им колесничего, остальное - на его поражение. Изначально известны только x и y - коэффициент, на который умножится поставленная сумма при победе колесничего, и коэффициент, на который умножится поставленная сумма при его поражении. Помимо этого игроку будет возмещена полная стоимость той части ставки, которая была потрачена на произошедший исход.

То есть, например, если на победу колесничего было поставлено a монет, и колесничий действительно выиграл заезд, то Кратос получит a + x * a монет, а если проиграл, то (n - a) + y * (n - a) монет.

Воин не очень силён в математике, так что вам придётся помочь ему понять, можно ли распределить монеты так, чтобы полученная им сумма была строго больше поставленной при любом результате гонки. Также ему интересно, какую максимальную сумму он может выиграть при наилучшем для него исходе. Если это возможно, то его интересуют все такие способы разбить монеты.

Входные данные

В первой строке находится количество монет n (1n109). Во второй строке находятся два вещественных числа x и y (10-5x, y104, число знаков после запятой не превышает 5) - коэффициенты победы и поражения колесничего.

Выходные данные

Если невозможно распределить монеты так, чтобы гарантированно остаться в выигрыше, выведите -1.

Иначе в первой строке выведите одно вещественное число - максимально возможный выигрыш при наилучшем исходе (при этом при альтернативном исходе Кратос все равно должен остаться в плюсе). Абсолютная или относительная погрешность этого числа не должна превышать 10-6.

Во второй строке выведите число разбиений k, при которых достигается максимальный выигрыш. В каждой из следующих k строк выведите по два числа a и b - количество монет, поставленных на выигрыш, и количество монет, поставленных на проигрыш. Разбиения не должны повторяться. Разбиения должны быть выведены в порядке возрастания суммы, поставленной на победу колесничего. Гарантируется, что число таких разбиений конечно.

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 128 MiB
Giriş verilənləri #1
6
1 2
Çıxış verilənləri #1
-1
Giriş verilənləri #2
8
3 1
Çıxış verilənləri #2
12.0000000
1
3 5
Mənbə 2018 Цикл Интернет-олимпиад для школьников, вторая командная олимпиада сезона, базовая номинация, 20 октября, Задача G