QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 128 MB Total points: 100

# 6581. Gra w podwajanie

Statistics

Gra w podwajanie to właściwie bardziej łamigłówka niż gra. Plansza do gry ma kształt prostokąta podzielonego na pola będące kwadratami jednostkowymi. Na początku niektóre pole zawierają żeton, a niektóre nie.

Celem gracza jest zgromadzenie jak największej liczby żetonów na jednym polu. Jedyny dostępny ruch polega na znalezieniu dwóch pól stykających się bokiem zawierających taką samą (dodatnią) liczbę żetonów i przełożeniu wszystkich żetonów z jednego z tych pól na drugie.

Napisz program, który mając daną początkową konfigurację planszy, dla każdego pola wyznaczy maksymalną liczbę żetonów, jakie gracz mógłby zgromadzić na tym polu.

Input Format

Pierwszy wiersz wejścia zawiera dwie liczby całkowite $n$ oraz $m$ ($1 \leq n,m \leq 200$) oznaczające liczbę wierszy oraz liczbę kolumn planszy. Każdy z kolejnych $n$ wierszy zawiera ciąg $m$ cyfr 0 lub 1. Cyfra 1 oznacza pole zawierające żeton, a cyfra 0 - pole wolne.

Output Format

Twój program powinien wypisać $n$ wierszy zawierających po $m$ liczb całkowitych. $j$-ta liczba w $i$-tym wierszu powinna oznaczać maksymalną liczbę żetonów, jakie gracz mógłby zgromadzić na polu położonym na przecięciu $i$-tego wiersza i $j$-tej kolumny, zaczynając z podanej konfiguracji początkowej.

Examples

Input

3 4
0111
1011
1011

Output

0 2 4 4
2 0 4 4
2 0 4 4

Explanation

Powyższy przykład wyjaśnia, w jaki sposób na polu na przecięciu środkowego wiersza i ostatniej kolumny można zgromadzić 4 żetony.

problem_6581_1.gif

加倍游戏与其说是一个游戏,不如说是一个谜题。游戏板是一个矩形,分成单位正方形的格子。开始时,一些格子包含筹码,一些不包含。

玩家的目标是在一个格子上收集尽可能多的筹码。唯一可用的移动是找到两个侧面相邻的格子,它们包含相同(正)数量的筹码,并将其中一个格子上的所有筹码移动到另一个格子上。

编写一个程序,给定板的初始配置,对于每个格子,确定玩家可以在该格子上收集的最大筹码数量。

输入格式

输入的第一行包含两个整数 $n$ 和 $m$ ($1 \leq n,m \leq 200$),表示板的行数和列数。接下来的 $n$ 行,每行包含一个由 $m$ 个数字 0 或 1 组成的字符串。数字 1 表示包含筹码的格子,数字 0 表示空闲格子。

输出格式

你的程序应该输出 $n$ 行,每行包含 $m$ 个整数。第 $i$ 行的第 $j$ 个数字应该表示玩家从给定初始配置开始,可以在位于第 $i$ 行和第 $j$ 列交叉处的格子上收集的最大筹码数量。

例子

输入

3 4
0111
1011
1011

输出

0 2 4 4
2 0 4 4
2 0 4 4

解释

以上示例解释了如何在中间行和最后一列交叉处的格子上收集 4 个筹码。

problem_6581_1.gif