Privită din spațiu, harta insulei din povestea noastră are forma unui caroiaj pătratic cu linii și coloane. Liniile și coloanele sunt numerotate de la la . În fiecare dintre cele celule se află câte un far. Inițial cel de la poziția este aprins și toate respectă regula: orice far are farurile vecine (pe linie și coloană, deci maximum ) în starea opusă față de starea sa.
În urma unei furtuni, s-au întâmplat lucruri ciudate: fulgerele au lovit unul după altul și au afectat starea unor faruri.
Sunt trei tipuri de fulgere:
- Fulger de tip . Pentru acesta se indică linia pe care lovește și el afectează starea farurilor de pe linia respectivă și de pe liniile cu număr de ordine mai mare. Mai exact, toate farurile de pe aceste linii își schimbă instantaneu starea.
- Fulger de tip . Pentru acesta se indică un număr ce reprezintă coloana pe care lovește și el afectează starea farurilor de pe coloana respectivă și de pe coloanele cu număr de ordine mai mare. Mai exact, toate farurile de pe aceste coloane își schimbă instantaneu starea.
- Fulger de tip . Pentru acesta se indică linia apoi coloana unui element din caroiaj. Toate farurile aflate pe aceeași paralelă cu diagonala secundară cu elementul specificat și pe paralelele cu diagonala secundară aflate sub aceasta, își schimbă starea.
Prin schimbarea stării unui far înțelegem că acesta se aprinde dacă este stins și se stinge dacă este aprins.
Cerință
Se dau date despre fulgere, în ordinea în care acestea acționează. Se cere ca la finalul furtunii să se indice care este starea anumitor faruri, aflate la coordonate precizate de pe insulă.
Date de intrare
Prima linie a fișierului lumini.in
conține un numărul natural , cu semnificația de mai sus. Pe linia a doua se află un număr natural , reprezentând numărul de fulgere.
Pe următoarele linii se află date despre câte un fulger, în ordinea în care acestea apar. Primul număr de pe fiecare linie este tipul de fulger ( sau sau ). Dacă acest număr este sau , se mai află pe această linie un spațiu și încă un număr. Acesta reprezintă linia pe care lovește fulgerul (dacă linia din fișier are la început ), respectiv coloana pe care lovește fulgerul (dacă linia respectivă din fișier are la început ). Dacă este vorba despre fulger de tip , pe acea linie se mai află două numere, reprezentând linia și coloana elementului de pe insulă unde lovește fulgerul, separate prin spațiu.
Linia următoare conține un număr . Pe următoarele linii se află câte două numere (separate prin spațiu) reprezentând linia și coloana unui far de pe insulă pentru care se dorește aflarea stării după furtună.
Date de ieșire
Fișierul de ieșire lumini.out
conține pe o linie, separate prin câte un spațiu, numere, reprezentând rezultatele interogărilor în ordinea în care acestea apar în fișierul de intrare. Dacă farul corespunzător este aprins se va scrie valoarea , iar dacă este stins se va scrie valoarea .
Restricții și precizări
- ;
- ;
- Se garantează că la precizarea fulgerelor linia începe cu , sau , iar celelalte valori de pe liniile respective sunt cuprinse între și inclusiv.
- ;
- Se garantează că pentru fiecare far a cărei stare trebuie aflată linia și coloana sunt cuprinse între și inclusiv.
- Pentru de puncte, , și apar doar fulgere de tipul ;
- Pentru alte puncte, , ;
- Pentru alte puncte, și apar doar fulgere de tipul ;
- Pentru alte puncte, ;
- Pentru alte puncte, ;
- Pentru restul de de puncte nu sunt restricții suplimentare.
Exemplu
lumini.in
4
3
1 2
3 3 1
2 3
5
1 1
2 4
3 2
4 2
4 4
lumini.out
1 0 0 1 0
Explicație
Inițial starea becurilor de pe insulă poate fi reprezentată astfel:
După aplicarea primului fulger starea becurilor devine:
După aplicarea celui de-al doilea fulger starea becurilor devine:
După aplicarea celui de-al treilea starea becurilor devine: