408699: GYM103265 B Честный дележ

Memory Limit:0 MB Time Limit:0 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

B. Честный дележограничение по времени на тест2 секундыограничение по памяти на тест256 мегабайтвводстандартный вводвыводстандартный вывод

Трое друзей отправились на рыбалку. Они беззаботно ловили рыбу, наслаждаясь природой и хорошей компанией.

Но вот подошла к концу совместная поездка, и стало понятно, что кто-то поймал больше, а кто-то меньше. Один из друзей, поймавший меньше всех, неожиданно заявил, что если он приедет домой с такими результатами, то его жена, объявив его жалким неудачником, уйдет от него. Поэтому было решено разделить весь улов на троих. Вам надо придумать, как организовать обмен рыбы между друзьями, чтобы все в итоге вернулись домой с одинаковым уловом.

Более формально, вам дан список из n попыток друзей поймать рыбу. Для каждой попытки известно, кто пытался поймать рыбу, и сколько он рыб он вытащил (в штуках). Вам требуется вывести таблицу размера 3 на 3, где на j-м месте в i-й строке будет находиться число ai, j, указывающее, сколько рыб i-й человек должен получить от j-го. Это число может быть как положительным, так и отрицательным (в случае, если i-й человек должен отдать рыбу j-му). Для вашей таблицы должно выполняться равенство ai, j =  - aj, i (в частности, из этого следует, что ai, i = 0).

Суммарный итоговый улов каждого из друзей должен быть одинаковыми (улов i-го человека складываются из той рыбы, которую он поймал сам, и той рыбы, которую он получит в результате итогового обмена).

Гарантируется, что существует такой способ обменяться рыбой, чтобы каждый рыбак ушел домой с одинаковым целым количеством рыб.

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

В первой строке вводится одна строка, состоящая только из букв латинского алфавита — имя первого из друзей. Имя непустое и его длина не превосходит 10. Во второй и третей строках в таком же формате вводятся имена второго и третьего друга. Гарантируется, что все имена различны.

В четвертой строке вводится одно целое число n — количество попыток поймать рыбу (1 ≤ n ≤ 100).

В следующих n строках вводятся сами попытки — сначала имя человека, который удил рыбу (гарантируется, что это имя было указано в одной из первых трех строк входных данных), затем через пробел одно целое число ci — сколько рыб он поймал (1 ≤ ci ≤ 104).

Гарантируется, что суммарный улов можно разделить на троих поровну, оставляя рыбы целыми.

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

Выведите 3 строки, в каждой по 3 целых числа. В i-й строке j-е число должно быть равно ai, j — сколько рыб (в штуках) должен получить i-й человек от j-го (нумерация друзей соответствует порядку, в котором они даны во входных данных).

Для выведенных чисел должны выполнятся следующие условия:

  • ai, j =  - aj, i;
  • ai, j — целое число, удовлетворяющее ограничению |ai, j| ≤ 107;
  • суммарный улов каждого из друзей (с учетом попыток, указанных во входных данных) одинаков.

Можно показать, что хотя бы один способ подобрать такие ai, j существует.

ПримерВходные данные
Vlad
Kolya
Misha
1
Kolya 3
Выходные данные
0 0 1 
0 0 -2
-1 2 0
Примечание

В первом примере ловил рыбу только Коля. Один из вариантов честного дележа такой: Коля отдает Мише 2 рыбы, потом Миша отдает Владу 1 рыбу.

加入题单

上一题 下一题 算法标签: