|
|||||||||||||||
|
Łamane płaskie
Rozważmy kartezjański układ współrzędnych narysowany na kartce papieru. Łamaną płaską w tym układzie nazywamy łamaną, którą można wykreślić prowadząc ołówek bez odrywania od papieru w kierunku od lewej do prawej strony kartki i taką, że każda prosta zawierająca odcinek łamanej jest nachylona do osi OX pod kątem należącym do przedziału domkniętego [-45°,45°]. Na kartce narysowano n różnych punktów o obu współrzędnych całkowitych. Jaka jest najmniejsza liczba łamanych płaskich, które należałoby wykreślić, żeby każdy z n punktów należał do co najmniej jednej z nich? Przykład
ZadanieNapisz program, który:
WejścieW pierwszym wierszu pliku wejściowego LAM.IN znajduje się dodatnia liczba całkowita n nie większa od 30000. Jest to liczba punktów. W kolejnych n wierszach znajdują się współrzędne punktów. Każdy wiersz zawiera dwie liczby całkowite x, y oddzielone pojedynczym odstępem, 0 <= x <= 30000, 0 <= y <= 30000. Liczby w wierszu i + 1, 1 <= i <= n pliku LAM.IN, są współrzędnymi i-tego punktu. WyjścieTwój program powinien zapisać jedną liczbę całkowitą w pierwszym i jedynym wierszu pliku wyjściowego LAM.OUT. Tą liczbą powinna być najmniejsza liczba łamanych płaskich, które należy wykreślić, żeby pokryć wszystkie dane punkty. PrzykładyDla pliku wejściowego LAM.IN: 6 1 6 10 8 1 5 2 20 4 4 6 2poprawnym rozwiązaniem jest plik wyjściowy LAM.OUT : 3 Twój program powinien szukać pliku LAM.IN w katalogu bieżącym i tworzyć plik LAM.OUT również w bieżącym katalogu. Plik zawierający napisany przez Ciebie program w postaci źródłowej powinien mieć nazwę LAM.??? gdzie zamiast ??? należy wpisać co najwyżej trzyliterowy skrót nazwy użytego języka programowania. Ten sam program w postaci wykonalnej powinien być zapisany w pliku LAM.EXE.
|