Jonathan está empolgado com a nova sensação do momento: o Jogo do Poder. Este jogo é jogado em uma matriz de linhas e colunas, na qual cada célula possui um monstro. O monstro na linha e coluna possui poder .
No início do jogo, Jonathan escolhe um dos monstros para jogar. O monstro escolhido por Jonathan se torna o herói do jogo e começa o jogo com o poder indicado em sua célula. Jonathan pode mover o herói ortogonalmente (isto é, para cima, baixo, direita ou esquerda) na matriz enquanto o herói estiver vivo. O herói não pode sair da matriz, mas pode visitar a mesma célula múltiplas vezes.
Toda vez que o herói entra em uma célula com um monstro vivo, ocorre uma batalha entre o herói e o monstro da célula. O herói ganha a batalha se, e somente se, o seu poder for maior ou igual ao poder do monstro. Caso contrário, o herói morre e perde o jogo em game over. Toda vez que o herói ganha uma batalha, o monstro derrotado morre (ou seja, a célula não possui mais nenhum monstro) e, como recompensa, o poder do monstro é somado ao poder do herói (ou seja, se o herói matar o monstro da célula , o poder do herói aumenta em ).
Jonathan percebeu que o jogo pode ser injusto: mesmo que ele jogue de maneira ótima, dependendo de sua escolha de herói, pode ser possível matar todos os monstros, apenas alguns ou até mesmo nenhum monstro.
Decidido a “platinar” o jogo, Jonathan precisa saber o poder máximo que cada herói consegue alcançar (ou seja, o poder máximo possível de ser atingido ao iniciar o jogo em cada célula da matriz) se o jogo for jogado de forma ótima. Felizmente, ele descobriu que os alunos da OBI (Organização dos Bons Informáticos) recentemente resolveram o Jogo da Vida, seu terceiro jogo favorito (atrás do Jogo do Poder e do Jogo de Corrida, claro), então ele pediu a sua ajuda novamente! Determine, para cada herói, o poder máximo que ele consegue alcançar caso Jonathan jogue de forma ótima.
A primeira linha de entrada contém dois inteiros e , o número de linhas e o número de colunas da matriz, respectivamente.
As próximas linhas contém M inteiros cada. O -ésimo inteiro da -ésima linha contém o poder do monstro na -ésima linha e -ésima coluna.
O seu programa deverá imprimir linhas, cada uma contendo inteiros. O -ésimo inteiro da -ésima linha deve ser o poder máximo que Jonathan consegue alcançar caso ele escolha como herói o monstro da célula e jogue de maneira ótima.
Atenção: Observe que não é possível declarar inteiros (com matriz, vetor etc.) sem estourar o limite de memória (isto causaria erros no programa pois tentaria usar dezenas de GB de memória). Preste atenção ao limite , que garante que a matriz sempre terá no máximo células.
A tarefa vale pontos. Estes pontos estão distribuídos em subtarefas, cada uma com suas restrições adicionais às definidas acima:
Seu programa pode resolver corretamente todas ou algumas das subtarefas (elas não precisam ser resolvidas em ordem). Sua pontuação final na tarefa é a soma dos pontos de todas as subtarefas resolvidas corretamente por alguma das suas submissões.
2 3
2 3 9
1 7 200
6 6 22
1 22 222
1 7
6 3 10 1 20 7 7
9 3 54 1 54 14 14
5 6
10 10 10 10 10 10
10 10 1 1 1 10
10 10 10 1 10 10
10 10 10 4 10 10
10 10 10 10 10 2
250 250 250 250 250 250
250 250 8 8 8 250
250 250 250 8 250 250
250 250 250 8 250 250
250 250 250 250 250 2