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

Задача . F. Dune II: Battle For Arrakis


Вы дошли до последней миссии в очень старой и очень популярной стратегии Dune II: Battle For Arrakis. Карта этой миссии может быть представлена в виде прямоугольной матрицы размера \(n \times m\). Изначально, в клетке \((i, j)\) стоит \(a_{i, j}\) отрядов вашей армии.

Вы готовитесь к последней битве, поэтому вы хотите собрать всю вашу армию в ровно одну клетку на карте (то есть \(nm-1\) клетка должна содержать \(0\) отрядов, а оставшаяся клетка должна содержать всю армию).

Чтобы достичь этого, вы можете совершить несколько (возможно, ноль) ходов. За один ход можно выбрать ровно один отряд из некоторой клетки и отправить его в соседнюю по стороне клетку. То есть из клетки \((i, j)\) можно отправить отряд в клетки:

  • \((i - 1, j)\);
  • \((i, j - 1)\);
  • \((i + 1, j)\);
  • \((i, j + 1)\).

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

Также, жизнь не стоит на месте, а ситуация на карте меняется. Всего есть \(q\) изменений, \(i\)-е изменение задается тремя целыми числами \(x, y, z\). Это изменение затрагивает армию в клетке \((x, y)\): после этого изменения количество отрядов в клетке \((x, y)\) становится \(z\) (то есть \(a_{x, y}\) заменяется на \(z\)).

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

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

В первой строке записаны три целых числа \(n, m\) и \(q\) (\(1 \le n, m \le 1000; 1 \le q \le 5000\)) — размеры матрицы и количество изменений, соответственно.

Каждая из следующих \(n\) строк содержит по \(m\) целых чисел, где \(j\)-е число \(i\)-й строки — это \(a_{i, j}\) (\(1 \le a_{i, j} \le 10^9\)) — количество отрядов в клетке \((i, j)\).

В каждой из следующих \(q\) строк записаны три целых числа, в \(i\)-й строке записаны три целых числа \(x_i, y_i\) и \(z_i\) (\(1 \le x_i \le n; 1 \le y_i \le m; 1 \le z_i \le 10^9\)) — клетка, в которой изменяется количество отрядов, и новое количество отрядов, соответственно.

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

Выведите \(q+1\) целое число \(r_0, r_1, r_2, \dots, r_n\), где \(r_0\) — это минимальное количество ходов, необходимые для сбора всей армии в ровно одной клетке, а \(r_i\) для каждого \(i\) от \(1\) до \(q\) — минимальное количество ходов, необходимые для сбора всей армии в ровно одной клетке, после \(i\) изменений.


Примеры
Входные данныеВыходные данные
1 3 3 1
1 2 3
2 1 2
1 1 2
2 3 100
21 22
2 4 4 3
2 5 6 3
4 8 10 5
2 6 7 1
8 4 2 1
1 1 8
2 3 4
4 4 5
123 135 129 145

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

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