In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
Lata pracy w inżynierii oprogramowania mogą spowodować ciężkie komplikacje psychiczne. Dlatego też programista Bajtazar postanowił porzucić dotychczasowe zajęcie i zaczął się przyglądać losowym ofertom zatrudnienia. Najbardziej zainteresowała go oferta pracy na farmie trudniącej się hodowlą ryb. "Fajna sprawa" - pomyślał Bajtazar - "i w sumie rybki to całkiem przyjemne stworzonka". Bajtazar zaaplikował o interesującą go posadę i przeszedł pozytywnie proces rekrutacji, a dzisiaj po raz pierwszy przyszedł do nowej pracy.
Nowy szef już zdążył przydzielić Bajtazarowi pierwsze zadanie. Musi on odizolować jeden zbiornik wodny od drugiego. Bajtazar przyjrzał się już sposobowi, w jaki zbiorniki są połączone, i oto co wywnioskował.
Dwa zbiorniki wodne są połączone pewną liczbą kanałów. Na każdym kanale znajdują się dwie śluzy. Kanał jest otwarty wtedy i tylko wtedy, gdy znajdujące się na nim śluzy są obie otwarte. Śluzy można otwierać i zamykać za pomocą przełączników. Jeden przełącznik może być podłączony do wielu śluz, ale jedna śluza jest zawsze podłączona do dokładnie jednego przełącznika. Może się tak zdarzyć, że dwie śluzy znajdujące się na jednym kanale są podłączone do jednego przełącznika, a także że jakiś przełącznik nie jest podłączony do żadnej śluzy.
Przykład zawierający trzy kanały i dwa przełączniki.
Bajtazar poeksperymentował trochę z przełącznikami i doszedł do wniosku, że doświadczenie programistyczne może mu się przydać do wykonania zadania. Napisz program, który na podstawie konfiguracji śluz i przełączników sprawdzi, czy da się zamknąć wszystkie kanały, i jeżeli tak, to wyznaczy stan każdego przełącznika w jednej z takich konfiguracji.
Pierwszy wiersz standardowego wejścia zawiera dwie liczby całkowite oraz , oznaczające odpowiednio liczbę kanałów i liczbę przełączników. Przełączniki są ponumerowane od do . Dodatkowo, w testach wartych co najmniej punktów, nie będzie przekraczało , a nie będzie większe niż .
Kolejne wierszy zawiera opisy kanałów; każdy kanał jest opisany w osobnym wierszu za pomocą czterech liczb całkowitych: , , , . Liczby i reprezentują przełączniki (), które sterują śluzami danego kanału. Liczby i mogą przyjmować wartości lub ; opisują one wspomniane sposoby sterowania: oznacza, że śluza jest zamknięta wtedy i tylko wtedy, gdy -ty przełącznik jest wyłączony, natomiast oznacza, że śluza jest zamknięta wtedy i tylko wtedy, kiedy -ty przełącznik jest włączony.
Jeżeli da się zamknąć wszystkie kanały, to na standardowe wyjście powinno zostać wypisanych wierszy. -ty z nich powinien zawierać , jeżeli -ty przełącznik powinien być wyłączony, a , jeżeli włączony. Jeżeli istnieje więcej niż jedno poprawne rozwiązanie, Twój program powinien wypisać którekolwiek z nich.
Jeżeli nie jest możliwe zamknięcie wszystkich kanałów, to Twój program powinien wypisać jeden wiersz, zawierający jedno słowo IMPOSSIBLE.
Dla danych wejściowych:
3 2 1 0 2 1 1 0 2 0 1 1 2 1
poprawną odpowiedzią jest:
0 1
natomiast dla danych wejściowych:
2 1 1 0 1 0 1 1 1 1
poprawnym wynikiem jest:
IMPOSSIBLE
Pierwszy z przykładów odpowiada obrazkowi z treści zadania.
Autor zadania: Linas Petrauskas.