Олимпиадный тренинг

Задача . E. Годзё и игра на матрице


Марин измоталась после долгого дня косплея, поэтому Годзё приглашает ее сыграть в игру!

Марин и Годзё по очереди кладут одну из своих фишек на таблицу размером \(n \times n\), при этом Марин ходит первой. Существуют некоторые ограничения на размещение фишек:

  • За исключением первого хода фишка, размещенная игроком, должна находиться на манхэттенском расстоянии более чем \(k\) от последней размещенной фишки. Другими словами, если игрок кладет фишку в \((x_1, y_1)\), то фишка, помещенная на следующем ходу, должна находиться в ячейке \((x_2, y_2)\), удовлетворяющей \(|x_2 - x_1| + |y_2 - y_1| > k\).
  • Помимо предыдущего ограничения, фишка может быть размещена в любом месте матрицы, включая ячейки, где уже были размещены фишки любого игрока.

Каждый раз, когда какой-либо игрок кладет фишку в ячейку \((x, y)\), этот игрок получает \(v_{x,\ y}\) очков. Все значения \(v\) в таблице различны. Очки за ячейку даются даже в случае, если какие-то фишки уже находятся в этой ячейке. Игра заканчивается, когда каждый игрок сделает \(10^{100}\) ходов.

Марин и Годзё сыграют \(n^2\) партий. Для каждой ячейки таблицы будет ровно одна партия, в которой первым ходом Марин размещает фишку в этой ячейке. Для каждой такой партии определите, у кого в итоге будет больше очков при оптимальной игре Марин и Годзё (после первого хода Марин)? Или партия закончится вничью?

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

Первая строка содержит два целых числа \(n\), \(k\) (\(3 \le n \le 2000\), \(1 \leq k \leq n - 2\)). Заметьте, что при таких ограничениях всегда возможно сделать ход.

Следующие \(n\) строк содержат по \(n\) целых чисел. \(j\)-м числом в \(i\)-й строке является \(v_{i,j}\) (\(1 \le v_{i,j} \le n^2\)). Все значения в \(v\) различны.

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

Выведите \(n\) строк. \(i\)-я строка должна содержать \(n\) символов, где \(j\)-й символ является результатом партии, в которой Марин начинает с ячейки \((i, j)\). Выведите 'M' в случае победы Марин, 'G' — в случае победы Годзё и 'D' — в случае равного количества очков. Не выводите пробелы между символами в одной строке.


Примеры
Входные данныеВыходные данные
1 3 1
1 2 4
6 8 3
9 5 7
GGG
MGG
MGG

time 4000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя