Tour en la grilla


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 1G

Author:
Problem type
Allowed languages
C++

Se tiene una grilla de n \times m celdas. Las filas están numeradas de 1 a n y las columnas de 1 a m. Las celdas se numeran consecutivamente por filas, desde 1 hasta n \times m, de modo que la celda ubicada en la fila r y la columna c tiene asignado el número (r-1) \cdot m + c. En particular, la celda 1 corresponde a la esquina superior izquierda de la grilla, es decir, a la posición (1, 1). Por ejemplo, una grilla de 5 \times 6 se numera de la siguiente manera:

Dos posiciones (a,b) y (c,d) se consideran adyacentes si comparten un lado, es decir, si una se encuentra inmediatamente arriba, abajo, a la izquierda o a la derecha de la otra. Formalmente, esto ocurre cuando |a - c| + |b - d| = 1.

Un tour es una secuencia de celdas distintas c_1, c_2, \dots, c_k tal que las posiciones de cada par de celdas consecutivas c_i y c_{i+1} son adyacentes. La longitud de un tour es el número total de celdas que lo componen, es decir, k.

Se desea encontrar un tour que cumpla las siguientes condiciones:

  • comienza en la celda 1;
  • termina en una celda con posición adyacente a la posición de la celda 1.

Tu tarea es determinar la máxima longitud posible de un tour que cumpla estas condiciones y, además, imprimir explícitamente la secuencia de celdas visitadas en dicho tour.

Entrada

La única línea de la entrada contiene dos enteros n y m (2 \le n, m \le 1000) - las dimensiones de la grilla.

Salida

En la primera línea, imprime un único entero k - la máxima longitud posible del tour.

En la segunda línea, imprime k enteros separados por espacios - las celdas visitadas en el orden en que aparecen en el tour.

La secuencia impresa debe corresponder a un tour válido que alcance la longitud máxima k.

Subtareas

Esta tarea está compuesta por 4 subtareas.

Para cada subtarea, se otorgará el 50\% de los puntos correspondientes si se imprime correctamente la longitud máxima del tour. Se otorgará el 100\% de los puntos si se imprime tanto la longitud máxima correcta como un tour válido que la alcance.

Subtarea Puntos Restricciones adicionales Dependencias
1 10 n = 2. -
2 20 n = 3. -
3 30 2 \le n, m \le 5. -
4 40 Sin restricciones adicionales. 1, 2, 3

Ejemplos

Entrada 1
3 3
Salida 1
8
1 4 5 8 9 6 3 2

El tour corresponde a las posiciones (1, 1) \to (2, 1) \to (2, 2) \to (3, 2) \to (3, 3) \to (2, 3) \to (1,3) \to (1,2). Note que cada par de posiciones consecutivas son adyacentes entre sí y que la posición (1,2) es adyacente a la posición (1,1).

Entrada 2
2 2
Salida 2
4
1 2 4 3

Comments

There are no comments at the moment.