QOJ.ac

QOJ

実行時間制限: 4.0 s メモリ制限: 2048 MB 満点: 100

#17329. Przedszkole raz jeszcze

統計

W przedszkolu jedną z najbardziej czasochłonnych czynności było wycinanie kształtów z kartki papieru za pomocą bezpiecznych nożyczek. Przyjrzyjmy się uproszczonemu modelowi tego zadania: zaczynasz z nieskończenie wielkim arkuszem papieru, na którym narysowano $N$ rozłącznych prostokątów o bokach równoległych do osi układu współrzędnych, a cięcia są nieskończenie długimi liniami prostymi. Cięcie nie może „zahaczyć” żadnego prostokąta: nie może przechodzić przez żaden punkt znajdujący się ściśle wewnątrz jakiegokolwiek prostokąta. (Cięcia przechodzące dokładnie wzdłuż krawędzi prostokąta lub przez jego wierzchołek są dozwolone). Gdy przecinasz kawałek papieru, rozpada się on na dwa oddzielne kawałki, które możesz dalej ciąć niezależnie od siebie (przyszłe cięcia na jednym kawałku nie wpływają na pozostałe).

Twoim celem jest wykonanie sekwencji cięć tak, aby każdy prostokąt znalazł się na własnym kawałku papieru (ponieważ po tym etapie bardzo łatwo jest wyciąć każdy prostokąt dokładnie).

Określ minimalną liczbę cięć (niekoniecznie równoległych do osi układu współrzędnych) potrzebnych do wycięcia prostokątów w ten sposób. Jeśli zadanie jest niemożliwe do wykonania, wypisz impossible.

Wejście

Pierwsza linia wejścia zawiera liczbę całkowitą $N$ ($1 \le N \le 100$), liczbę prostokątów.

Każda z kolejnych $N$ linii opisuje jeden prostokąt. Każda linia zawiera cztery liczby całkowite oddzielone spacjami $x_1, y_1, x_2$ oraz $y_2$ ($|x_1|, |y_1|, |x_2|, |y_2| \le 10^9$, $x_1 < x_2$, $y_1 < y_2$), gdzie $(x_1, y_1)$ to lewy dolny róg prostokąta, a $(x_2, y_2)$ to prawy górny róg prostokąta.

Gwarantuje się, że prostokąty są rozłączne: żadne dwa prostokąty nie przecinają się w żadnym punkcie, wliczając w to ich krawędzie lub wierzchołki.

Wyjście

Wypisz minimalną liczbę cięć potrzebnych do oddzielenia wszystkich prostokątów. (Nie uwzględniaj dodatkowych cięć, które byłyby potrzebne do przycięcia pustego papieru wokół marginesów prostokątów po ich oddzieleniu). Jeśli zadanie jest niemożliwe do wykonania, wypisz impossible.

Uwagi

Pierwsze dwa cięcia w jednej z możliwych sekwencji cięć, które oddzielają prostokąty, pokazano poniżej. Pierwsze cięcie jest narysowane na czerwono, a drugie na niebiesko. Zauważ, że niebieskie cięcie nie jest poprawne przed wykonaniem czerwonego cięcia, ponieważ zahaczyłoby o prostokąt po prawej stronie.

Przykład

Wejście 1

6
-1 1 0 4
1 0 3 1
2 2 3 3
4 0 5 3
2 4 5 5
6 3 7 5

Wyjście 1

5

Wejście 2

4
0 -1 1 2
2 -1 5 0
-10 3 3 4
4 1 5 13

Wyjście 2

impossible

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.