아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Игра <<Bloxx city>>

시간 제한2초메모리 제한1024 MB

요약
일부 집의 높이가 주어진 격자에서 높이 h인 집은 이웃에 1부터 h-1까지 모든 높이의 집이 있어야 지을 수 있을 때, 전체 높이 합이 최대가 되도록 집을 짓고 그 이동 순서를 출력한다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산, 시뮬레이션
정답자
아직 제출이 없습니다

문제

На новом мобильном телефоне фирмы Mokia установлена игра <<Bloxx city>>. Действие этой игры происходит на прямоугольном поле размером nn на mm.

Каждая клетка этого поля может быть пустой или в ней может находиться дом некоторой высоты. За один ход игрок может в пустой клетке построить дом. При этом дом высоты hh в некоторой клетке можно строить только, если в клетках, имеющих с рассматриваемой общую сторону, находятся дома всех высот от 1 до h−1h-1 (соответственно, дом высоты 1 можно строить в любой свободной клетке поля).

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

Напишите программу, которая позволяет добиться этой цели.

입력

Первая строка входного файла содержит два целых числа: mm и nn (1≤m,n≤101 \le m, n \le 10, m⋅n≤16m \cdot n \le 16). Последующие mm строк описывают игровое поле: каждая из них содержит по nn чисел h_i,jh\_{i, j} (0≤h_i,j≤50 \le h\_{i, j} \le 5), задающих высоты домов, изначально стоящих на поле. Если некоторое из чисел h_i,jh\_{i, j} равно нулю, то эта клетка пуста.

출력

В первой строке выходного файла выведите максимальную возможную сумму высот домов. Во второй строке выходного файла выведите kk --- число ходов, которые необходимо сделать, чтобы добиться такой суммы высот. В последующих kk строках выведите описание этих ходов: каждая из них должна содержать по три числа: rr, cc, hh --- соответственно, координаты клетки, в которой строится дом, и его высоту (1≤r≤m1 \le r \le m, 1≤c≤n1 \le c \le n).

예제1

  1. 예제 1

    입력
    3 4
    0 2 4 0
    0 2 0 3
    0 0 0 0
    
    예상 출력
    29
    8
    1 4 1
    2 1 1
    3 3 1
    3 1 2
    3 4 2
    1 1 3
    3 2 3
    2 3 5