Cuadrado Máximo
Los Cibernéticos están implementando un nueva forma de cultivo de papa. En vez de sembrarlas en surcos, como es costumbre, las están sembrando en parcelas cuadradas de un metro de lado. El campo contiene
Entrada
Línea
Líneas
Salida
Escribir la mayor cantidad de papas que se pueden recoger utilizando el tractor solo una vez.
Ejemplo de Entrada 1
4
2 -8 4 -6
7 1 -5 3
-9 7 6 5
8 3 2 -4
Ejemplo de Salida 1
20
Ejemplo de Entrada 2
3
-5 -5 -5
-5 3 -5
-5 -5 -5
Ejemplo de Salida 2
3
Comments
Por que estructura de datos puedo resolver este problema?
Haces una tabla acumulativa en 2D, luego iteras por el tamaño del lado de los cuadrados, y cuando estás en un tamaño T, iteras por los cuadrados de T x T, computas la suma de cada uno usando la tabla acumulativa y vas guardando el máximo. Si la matriz es de N x N, computar la tabla acumulativa toma tiempo O(N^2), hay N posibles tamaños posibles del lado de los cuadrados, y para cada tamaño, hay O(N^2) cuadrados, por tanto haces O(N^3) operaciones, que es suficiente para este problema.