QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB

#22945. Prostokąty łączące

Statistics

Na płaszczyźnie danych jest kilka punktów. Punkty są numerowane kolejno od $1$, przy czym każdy numer występuje dokładnie przy $2$ punktach tworzących parę. Zatem łączna liczba punktów jest zawsze parzysta. Chcemy połączyć dwa punkty o tym samym numerze prostokątem, którego są przeciwległymi wierzchołkami. Taki prostokąt nazywamy prostokątem łączącym. Zadanie polega na znalezieniu kilku niepokrywających się prostokątów łączących spełniających następujące trzy warunki.

(Warunek 1) Przeciwległe wierzchołki prostokąta łączącego muszą być punktami o tym samym numerze. Nie wolno łączyć prostokątem punktów o różnych numerach.

(Warunek 2) Wszystkie prostokąty łączące muszą być od siebie oddzielone. Sytuacja z rysunku 1 jest niedozwolona. Niedozwolone jest również stykanie się boków lub wierzchołków dwóch prostokątów, jak na rysunku 2, oraz zawieranie się jednego prostokąta wewnątrz drugiego, jak na rysunku 3.

(Warunek 3) Liczba punktów zdobytych za utworzenie prostokąta łączącego jest równa numerowi przypisanemu jego parze punktów.

Napisz program, który uzyska najwyższy wynik przy zachowaniu powyższych warunków.

problem_22945_0d52a965663d84345db19b84e9415a7a.jpg

Wejście

Pierwszy wiersz zawiera liczbę par.

Kolejne wiersze zawierają współrzędne dwóch punktów każdej pary, w kolejności numerów od $1$.

Liczba par nie przekracza $50$ (czyli $100$ punktów). Każda współrzędna jest dodatnią liczbą całkowitą nie większą niż $100$.

Dwa punkty tworzące parę nie leżą na tej samej prostej pionowej ani poziomej.

Wyjście

W pierwszym wierszu wypisz liczbę wybranych par. W następnym wierszu wypisz numery wybranych prostokątów łączących w kolejności rosnącej.

Przykład

Wejście 1

6
2 5 1 3
5 6 3 2
5 2 6 4
7 6 5 8
1 6 5 4
3 7 7 3

Wyjście 1

3
1 3 4

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.