Polish version    English version  
  Historia OI -> V OI 1997/1998 -> Zadania


 Aktualności
 O olimpiadzie
 Komitety
 XVIII OI 2010/2011
 Historia OI
XVII OI 2009/2010
XVI OI 2008/2009
XV OI 2007/2008
XIV OI 2006/2007
XIII OI 2005/2006
XII OI 2004/2005
XI OI 2003/2004
X OI 2002/2003
IX OI 2001/2002
VIII OI 2000/2001
VII OI 1999/2000
VI OI 1998/1999
V OI 1997/1998
Wyniki III etapu
Wyniki II etapu
Wyniki I etapu
Zadania
Regulamin
Terminarz
Statystyki
IV OI 1996/1997
III OI 1995/1996
II OI 1994/1995
I OI 1993/1994
 Książeczki OI
 Reprezentacja
 Obozy Olimpiady
 Galeria zdjęć
 Ciekawe odsyłacze
 OIG LiveCD
 IV OIG 2009/2010
 Historia OIG
 SIO
 MAIN
V Olimpiada Informatyczna 1997/98

Zadanie: LAM
Autor: Grzegorz Jakacki, Krzysztof Sobusiak
Łamane płaskie

III ETAP, DRUGI DZIEŃ ZAWODÓW - ŚRODA 8 KWIETNIA 1998 r.  
Plik źródłowy: LAM.??? (np. pas, c, cpp)
Plik wykonywalny: LAM.exe
Plik wejściowy: LAM.in
Plik wyjściowy: LAM.out

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

[przyklad]
Dla 6 punktów o współrzędnych (1,6), (10,8), (1,5), (2,20), (4,4), (6,2) najmniejszą liczbą łamanych płaskich pokrywających te punkty jest 3.

Zadanie

Napisz program, który:

  • wczytuje z pliku tekstowego LAM.IN liczbę punktów i ich współrzędne;
  • oblicza najmniejszą liczbę łamanych płaskich, które należałoby wykreślić, żeby pokryły one wszystkie punkty;
  • zapisuje wynik w pliku tekstowym LAM.OUT.

Wejście

W 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ście

Twó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łady

Dla pliku wejściowego LAM.IN:

6
1 6
10 8
1 5
2 20
4 4
6 2
poprawnym 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.





Wersja do druku