linii

Time limit: 0.12s Memory limit: 64MB Input: linii.in Output: linii.out

Pentru a nu mai plictisi concurenţii cu enunţuri prea lungi şi complicate, comisia lotului vă dă următoarea problemă. Se dau NN puncte în plan, aflate la coordonate întregi. Se acoperă punctele cu un număr minim de linii frânte, fiecare linie satisfăcând următoarele cerinţe:

  • o linie frântă trebuie să pornească dintr-un punct având coordonate întregi
  • la fiecare pas linia trebuie prelungită din punctul curent (x,y)(x, y) într-unul din cele 33 puncte: (x1,y+1)(x-1,y+1), (x,y+1)(x,y+1), (x+1,y+1)(x+1,y+1).

Cerință

Sa se determine numărul minim de linii frânte care acoperă toate punctele date.

Date de intrare

Fişierul de intrare linii.in conţine pe prima linie un număr natural NN, reprezentând numărul de puncte, iar următoarele NN linii se află câte două numere întregi XX, YY, separate printr-un spaţiu, reprezentând coordonatele unui punct.

Date de ieșire

Fişierul de ieşire linii.out va conţine pe prima linie un număr natural reprezentând numărul minim de linii frânte care acoperă toate cele NN puncte.

Restricții și precizări

  • 1N300 0001 ≤ N ≤ 300\ 000
  • Coordonatele celor NN puncte sunt numere întregi din intervalul [0,100 000 000][0, 100 \ 000 \ 000]
  • Punctele nu sunt neapărat distincte; dacă sunt mai multe puncte care coincid, atunci ele se consideră acoperite simultan de aceeaşi linie frântă.

Exemplu

linii.in

5
1 1
6 4
3 3
3 5
5 2

linii.out

2

Explicație

Log in or sign up to be able to send submissions!