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: OKN
Autor: Wojciech Guzicki
Okno

II ETAP, DRUGI DZIEŃ ZAWODÓW - SOBOTA 14 LUTEGO 1998 r.  
Plik źródłowy: OKN.??? (np. pas, c, cpp)
Plik wykonywalny: OKN.exe
Plik wejściowy: OKN.in
Plik wyjściowy: OKN.out

W prostokątnym układzie współrzędnych dany jest wielokąt o bokach równoległych do osi układu. Każde dwa kolejne boki w tym wielokącie są do siebie prostopadłe, a każdy wierzchołek ma współrzędne całkowitoliczbowe. Dane jest również okno, czyli prostokąt o bokach równoległych do osi układu. Wnętrze wielokąta (ale nie jego brzeg) zostało pokolorowane na czerwono. Jaka jest liczba rozłącznych czerwonych fragmentów wielokąta widzianych przez okno?

Przykład

Przyjrzyjmy się rysunkowi poniżej:

Liczba parami rozłącznych fragmentów wielokąta widzianych przez okno wynosi 2.

Zadanie

Napisz program, który:

  • wczytuje opisy okna i wielokąta z pliku tekstowego OKN.IN;
  • oblicza liczbę parami rozłącznych czerwonych fragmentów wielokąta widzianych przez okno;
  • zapisuje wynik w pliku tekstowym OKN.OUT.

Wejście

W pierwszym wierszu pliku wejściowego OKN.IN znajdują się cztery liczby całkowite x1, y1, x2, y2 z przedziału [0..10000] oddzielone pojedynczymi odstępami. Liczby x1, y1 są współrzędnymi górnego-lewego rogu okna. Liczby x2, y2 są współrzędnymi dolnego-prawego rogu okna. Następny wiersz pliku wejściowego zawiera liczbę całkowitą n, 4<=n<=5000. Jest to liczba wierzchołków wielokąta. W kolejnych n wierszach znajdują się współrzędne kolejnych wierzchołków wielokąta danych w kierunku przeciwnym do ruchu wskazówek zegara, tzn. wnętrze wielokąta leży po lewej stronie jego brzegu, gdy przesuwamy się wzdłuż boków wielokąta zgodnie z zadanym porządkiem. Każdy wiersz zawiera dwie liczby całkowite x, y oddzielone pojedynczym odstępem, 0<=x<=10000, 0<=y<=10000. Liczby w wierszu i + 2, 1<=i<=n, w pliku OKN.IN są współrzędnymi i-tego wierzchołka wielokąta.

Wyjście

Twój program powinien zapisać w pierwszym i jedynym wierszu pliku wyjściowego OKN.OUT jedną liczbę całkowitą, a mianowicie - liczbę rozłącznych czerwonych fragmentów wielokąta widzianych przez okno.

Przykład

Dla pliku wejściowego OKN.IN:

0 5 8 1
24
0 0
4 0
4 2
5 2
5 0
7 0
7 3
3 3
3 2
2 2
2 4
1 4
1 5
2 5
2 6
3 6
3 5
4 5
4 6
5 6
5 4
7 4
7 7
0 7
poprawnym rozwiązaniem jest plik wyjściowy OKN.OUT :
2





Wersja do druku