QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 128 MB Total points: 10

#10642. Nożyczki [B]

Statistics

Bajtazar kupił nożyczki. Teraz chciałby je przetestować, dlatego chwycił leżący w pobliżu wielokąt i postanowił pociąć go na prostokąty. Stwierdził, że zrobi to tak, aby wykonać jak najmniejszą liczbę cięć. Pomóż Bajtazarowi i oblicz, ile cięć będzie musiał wykonać.

Wielokąt składa się jedynie z pionowych i poziomych odcinków. Przed wzięciem nożyczek do ręki Bajtazar rysuje na wielokącie pewną liczbę pionowych i poziomych odcinków. Początek i koniec każdego odcinka leżą na brzegu wielokąta, zaś wnętrze odcinka zawiera się we wnętrzu wielokąta. Następnie Bajtazar przecina wielokąt wzdłuż wszystkich narysowanych odcinków. Liczba wykonanych cięć to liczba narysowanych odcinków. Po wykonaniu wszystkich cięć, wszystkie powstałe kawałki powinny mieć kształt prostokątów.

Zwróć uwagę, że po wykonaniu pewnej liczby cięć niektóre z narysowanych odcinków mogły zostać przecięte, jednak wykonanie cięć wzdłuż wszystkich kawałków powstałych z jednego narysowanego odcinka uznajemy za jedno cięcie. W szczególności oznacza to, że kwadrat o rozmiarze 2 × 2 można podzielić na cztery kwadraty rozmiaru 1 × 1 za pomocą zaledwie dwóch cięć (choć oczywiście z punktu widzenia celu, jaki postawił przed sobą Bajtazar, takie przecinanie nie ma sensu).

Input Format

W pierwszym wierszu wejścia znajduje się jedna liczba całkowita $ n $ ($4 \le n \le 100\,000$) oznaczająca liczbę wierzchołków wielokąta. Następne $ n $ wierszy opisuje kolejne wierzchołki wielokąta. Opis $ i $-tego wierzchołka składa się z pary liczb całkowitych $ x_{i} $, $ y_{i} $ ($-10^{9} \le x_{i} , y_{i} \le 10^{9}$), które opisują współrzędne tegoż wierzchołka.

Wszystkie boki wielokąta są pionowe lub poziome. Dwa boki wielokąta przecinają się jedynie wtedy, gdy są kolejnymi bokami na brzegu wielokąta. W takiej sytuacji ich jedynym punktem przecięcia jest wspólny wierzchołek. W szczególności współrzędne wszystkich wierzchołków są parami różne.

Output Format

Twój program powinien wypisać na wyjście minimalną liczbę cięć potrzebną do podzielenia wielokąta na prostokąty.

Example

Input

8
0 0
6 0
6 7
4 7
4 3
2 3
2 5
0 5

Output

2

Notes

problem_10642_1.gif?

Rysunek przedstawia kilka możliwych sposobów podziału wielokąta opisanego w przykładzie na prostokąty za pomocą dwóch cięć.

About Issues

We understand that our problem archive is not perfect. If you find any issues with the problem, including the statement, scoring configuration, time/memory limits, test cases, etc.

You may use this form to submit an issue regarding the problem. A problem moderator will review your issue and proceed it properly.

STOP! Before you submit an issue, please READ the following guidelines:

  1. This is not a place to publish a discussion, editorial, or requests to debug your code. Your issue will only be visible by you and problem moderators. Other users will not be able to view or reply your issues.
  2. Do not submit duplicated issues. If you have already submitted one, please wait for an moderator to review it. Submitting multiple issues will not speed up the review process and might cause your account to be banned.
  3. Issues must be filed in English or Chinese only.
  4. Be sure your issue is related to this problem. If you need to submit an issue regarding another problem, contest, category, etc., you should submit it to the corresponding page.

Active Issues 0

No issues in this category.

Closed/Resolved Issues 0

No issues in this category.