Levantar la cerca

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 9
Dificultad Difícil Algoritmos
Mostrar (2) GeometríaOrdenamiento
Enviar solución

Puntos: 20

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

En un jardín hay \(n\) árboles en puntos distintos con coordenadas enteras. Se quiere rodearlos a todos con una cerca de largo mínimo: su forma es la envolvente convexa de los puntos. Encuentra todos los árboles que quedan sobre la cerca, incluidos los que están en medio de un lado.

Entrada

La primera línea tiene \(n\) \((1 \le n \le 3000)\). Cada una de las siguientes \(n\) líneas tiene un punto \(x\) \(y\) \((0 \le x, y \le 10^4)\).

Salida

La primera línea tiene la cantidad \(k\) de árboles sobre la cerca. Siguen \(k\) líneas con \(x\) \(y\), ordenadas por \(x\) y luego por \(y\).

Ejemplo 1

Entrada

6
1 1
2 2
2 0
2 4
3 3
4 2

Salida

5
1 1
2 0
2 4
3 3
4 2

Ejemplo 2

Entrada

3
1 2
2 2
4 2

Salida

3
1 2
2 2
4 2

Ejemplo 3

Entrada

1
5 5

Salida

1
5 5

Comentarios

No hay comentarios por el momento.