2007_C_Powierzchnia drzewa

advertisement
WEiTI
Kwalifikacje na AMPPZ / CEPC, 13 października 2007
Zadanie C
Powierzchnia drzewa
W pewnym eksperymencie naukowym analizuje się ciąg danych pochodzących z pomiarów. Jeden z
badaczy wysunął hipotezę, Ŝe waŜne wnioski z pomiarów będzie moŜna wyciągnąć, jeŜeli uda się
scharakteryzować syntetycznie historię wahań wartości danych. Zwykle stosowane do tego celu
wyznaczanie róŜnic kolejnych wartości nie daje dobrej charakterystyki ciągu, gdyŜ uwzględnia tylko
bezpośrednie sąsiedztwo próbek. Po dłuŜszych dyskusjach zaproponowano wykorzystanie w analizie
struktury binarnego drzewa szukania. Jak wiadomo, dla tego samego zbioru danych kształt drzewa
szukania zaleŜy od kolejności wstawiania elementów do drzewa. Postanowiono zbadać przydatność
hipotezy przeprowadzając obliczenia pola powierzchni prostokąta pokrywającego binarne drzewo
szukania utworzone dla ciągu danych. Przyjęto następujące ustalenia:
1. węzły drzewa umieszczane są w punktach rastra o współrzędnych całkowitych
2. kaŜdy węzeł reprezentuje unikalną wartość (powtórzenia elementów w ciągu są ignorowane)
3. temu samemu punktowi rastra moŜe być przyporządkowany 1 lub więcej węzłów drzewa
4. jeŜeli węzeł drzewa zajmuje pozycję (x, y) i posiada prawe poddrzewo, to korzeń tego poddrzewa
ma współrzędne (x+1, y+1); analogicznie dla lewego poddrzewa, jeśli istnieje, współrzędne
korzenia to (x-1, y+1)
5. pole powierzchni drzewa to pole minimalnego prostokąta o bokach zgodnych z osiami układu
współrzędnych pokrywającego wszystkie węzły drzewa.
Napisać program do przeprowadzenia tych obliczeń.
Wejście
Standardowe wejście zawiera pewną liczbę zestawów danych. KaŜdy zestaw składa się z wiersza z
liczbą n (długość ciągu do zbadania) i następnego wiersza lub wierszy z danymi d1 .. dn oddzielonymi
spacjami. Ostatni wiersz danych wejściowych zawiera 0. Długość ciągu n ∈ { 1..100000 }; liczby
ciągu di∈ int.
Wyjście
Dla kaŜdego zestawu wejściowego wyprowadzany jest wiersz zawierający dwie liczby całkowite
oddzielone spacją: a b (długości boków prostokąta pokrywającego w kierunku osi X i Y).
Przykład
Wejście
1
99
4
99 99 99 99
99
4
8 20 10 15
7
15 10 19 12
18 10 15
0
Wyjście
0 0
0 0
1 3
2 2
Download