Polish version    English version  
  IV OIG 2009/2010


 Aktualności
 O olimpiadzie
 Komitety
 XVIII OI 2010/2011
 Historia OI
 Książeczki OI
 Reprezentacja
 Obozy Olimpiady
 Galeria zdjęć
 Ciekawe odsyłacze
 OIG LiveCD
 IV OIG 2009/2010
Terminarz
Przepisy
Komitet
Przydatne zasoby
Dla zawodników
SIOgim
Opracowania
II Etap
Wyniki II etapu
 Historia OIG
 SIO
 MAIN

Zadanie: Lustrzana pułapka


Lustrzana pułapka to prostopadłościan zbudowany z luster, których powierzchnie odbijające są skierowane do wnętrza prostopadłościanu. Dokładnie w środku prostopadłościanu zawieszony jest miniaturowy laser o rozmiarach punktu. Zadanie polega na takim skierowaniu lasera, aby jego promień przebył jak najdłuższą drogę i trafił w laser. Przy czym przez drogę rozumiemy sumę odległości, jaką przebył promień lasera w każdym z trzech kierunków równoległych do krawędzi luster (czyli mierzymy tzw. metryką miejską).

Wymiary lustrzanej pułapki są parzystymi liczbami całkowitymi. Krawędzie oraz wierzchołki, w których lustra stykają się ze sobą, nie odbijają promieni lasera. Wewnątrz pułapki określamy układ współrzędnych: osie układu są równoległe do krawędzi pułapki, a laser znajduje się w początku układu współrzędnych. Laser można skierować na dowolny punkt wewnątrz pułapki o współrzędnych całkowitych, włączając w to punkty na powierzchni luster (z wyjątkiem samego lasera, czyli punktu (0, 0, 0)).

Zadanie

Napisz program, który:
  • wczyta ze standardowego wejścia wymiary lustrzanej pułapki,
  • wyznaczy kierunek takiego ustawienia lasera, że promień wystrzelony przez laser:
    • będzie odbijał się od luster, choć niekoniecznie od wszystkich,
    • nie trafi w krawędź, ani w wierzchołek pułapki,
    • trafi ponownie do lasera, choć być może z innego kierunku,
    • przebędzie możliwie najdłuższą drogę (w sensie wyżej zdefiniowanej odległości).
  • wypisze wynik na standardowe wyjście.

Wejście

Pojedynczy test składa się z wielu lustrzanych pułapek do przeanalizowania. W pierwszym wierszu wejścia podana jest jedna liczba całkowita 1 ≤ K ≤ 1000, oznaczająca liczbę pułapek do rozpatrzenia. W wierszach 2...K + 1 opisane są pułapki, po jednej w wierszu. Opis pułapki składa się z trzech liczb 5 ≤ x, y, z ≤ 1000, oddzielonych pojedynczymi odstępami. Lustrzana pułapka ma wymiary 2x×2y×2z.

Wyjście

Twój program powinien wypisać dokładnie K wierszy. W wierszu o numerze i powinno się znaleźć rozwiązanie dla pułapki o numerze i: trzy liczby całkowite kx, ky, kz, oddzielone pojedynczymi odstępami, - xkxx, - ykyy, - zkzz, (kx, ky, kz) <> (0, 0, 0). Liczby te oznaczają, że w i-tej pułapce laser powinien być skierowany na punkt o współrzędnych (kx, ky, kz).

Jeżeli istnieje wiele poprawnych wyników, Twój program powinien wypisać dowolny z nich.






Wersja do druku