Deslocamento cíclico de matriz com maximização da soma da diagonal

Rust Hard loops

Tarefa «Deslocamento cíclico de matriz com maximização da soma da diagonal»

Dada uma matriz quadrada de inteiros de tamanho N x N. Em um movimento, é possível deslocar ciclicamente qualquer linha para a esquerda ou para a direita por um número arbitrário de posições, ou deslocar ciclicamente qualquer coluna para cima ou para baixo por um número arbitrário de posições. O objetivo é maximizar a soma dos elementos na diagonal principal (do canto superior esquerdo ao canto inferior direito). Encontre a soma máxima possível após qualquer número dessas operações. N de 1 a 100, os elementos da matriz são números inteiros de -10^6 a 10^6.

Formato de Entrada

Na primeira linha, um número inteiro N. Em seguida, N linhas, cada uma contendo N números inteiros separados por espaço.

Formato de Saída

Um único número inteiro — a soma máxima na diagonal principal.

Exemplos

Exemplo 1

ENTRADA
5 1 -2 3 -1 2
SAÍDA
5

Exemplo 2

ENTRADA
3 1 2 3 4 5 6 7 8 9
SAÍDA
18

Exemplo 3

ENTRADA
2 3 4 1 2
SAÍDA
6
main.rs