Problem description
Danych jest N punktów na płaszczyźnie.
Napisz program, który: wczyta pozycje punktów, wyznaczy liczbę podzbiorów punktów, które tworzą wielokąt wypukły (wszystkie kąty mniejsze niż 180∘ i wszystkie punkty ze zbioru na brzegu wielokąta) i wypisze wynik na standardowe wyjście.
Wejście
W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N, określająca liczbę punktów. W kolejnych N wierszach znajduje się opis kolejnych punktów, po jednym w wierszu. Opis każdego punktu składa się z dwóch liczb całkowitych xi oraz yi, oddzielonych pojedynczym odstępem. Są to współrzędne i-tego punktu.
Wyjście
W pierwszym (jedynym) wierszu wyjścia powinna się znaleźć jedna nieujemna liczba całkowita – reszta z dzielenia przez 109 + 7 liczby podzbiorów punktów, które tworzą wielokąt wypukły.
Uwaga
W tym zadaniu przyjmujemy, że wielokąt musi mieć co najmniej trzy boki.
Ograniczenia
1 ≤ N ≤ 200, − 109 ≤ xi, yi ≤ 109.
Przykład
Wejście | Wyjście | Wyjaśnienie |
|
|
Jest 9 wielokątów wypukłych: wszystkie trójkąty (jest ich 8) oraz kwadrat (bez punktu środkowego). |