Linesweeper

시간 제한4초메모리 제한1024 MB

요약
무한히 긴 두 행짜리 지뢰판에서 위쪽 행의 힌트 하나가 갱신될 때마다 아래쪽 행의 특정 칸이 지뢰인지, 아닌지, 판정 불가인지, 아니면 배치 자체가 불가능한지 답한다.
난이도

보통10점 중 7점

유형
동적 계획법, 세그먼트 트리, 구현
정답자
아직 제출이 없습니다

문제

Juku arvutiekraan on lõpmata lai, aga vaid 2 cm kõrge. On mõistetav, et sellise ekraaniga on paljusid arvutimänge väga ebamugav mängida. Kõiketeadev jõuluvana toob Jukule tema arvutiga sobivaid mänge. Üks selline on Linesweeper.

Linesweeperi mängulaud koosneb kahe rea ja lõpmatu arvu veergudega tabelist; tabeli veerud on nummerdatud täisarvudega. Alumise rea ruutudes võivad olla miinid; miinide asukohad ei ole teada. Ülemise rea igas ruudus on kirjas täisarv, mis näitab, mitu miini selle ruudu naaberruutudes asub. Kaks ruutu on naaberruudud, kui neil on ühine nurk või serv. Mängija ülesandeks on leida, millistes ruutudes on miinid.

Lohaka programmeerimise tulemusena on sellel mängul mõned omapärased vead:

  • Esimene mäng on alati selline, kus ülemisel real on ainult nullid.
  • Igas mängus erineb ülemine rida eelmise ülemisest reast täpselt ühe ruudu võrra.
  • On võimalik, et mängijale näidatakse sellist ülemist rida, millele vastavat alumist rida tegelikult üldse olemas olla ei saa.

Juku on selles mängus üsna osav --- ta suudab enamasti miinide asukohad ise selgeks teha, aga vahel vajab veidi abi vihjete näol. Juku küsib alati vihjet kujul "kas ruudul ii on miin?". Märgime, et sellele küsimusele on neli erinevat võimalikku vastust:

  • sellisele ülemisele reale vastavat alumist rida ei saa olla (tähis !);
  • saab näidata, et selles ruudus kindlasti on miin (tähis x);
  • saab näidata, et selles ruudus miini kindlasti ei ole (tähis o);
  • on võimalik, et selles ruudus on miin ja võimalik, et ei ole (tähis ?).

Jukule vihjete andmine on aga tüütu ja seda tööd võiks teha programm.

Formaalselt antakse meile QQ päringut, mis võivad olla kahest tüübist:

  1. Antud ii ja cc. Juku alustab uut mängu, mis erineb eelmisest ainult selle poolest, et ülemise rea ii-ndas ruudus on nüüd arv cc.
  2. Antud ii. Juku küsib, kas alumise rea ii-ndas ruudus on miin.

Kirjutada programm, mis nendele päringutele vastab.

입력

Sisendi esimesel real on täisarv QQ (1≤Q≤2⋅1051 \le Q \le 2 \cdot 10^5).

Järgneb QQ rida, millest igaüks kirjeldab ühte päringut. Rida on kas kujul 1 i c (1≤i≤1051 \le i \le 10^5, 0≤c≤30 \le c \le 3) või 2 i (1≤i≤1051 \le i \le 10^5), kirjeldades vastavalt esimest või teist tüüpi päringut.

출력

Iga sisendis antud teist tüüpi päringule tuleb vastata eraldi reale ühega sümbolitest x, o, !, ?.

힌트

Esimeses näites jääb Juku esimest korda hätta järgmise mängu korral:

Saab näidata, et alumisel real toodu on ainus võimalik miinide paigutus.

Kolmandas näites jääb Juku hätta juba esimesel mängul, kus ülemine rida koosneb ainult nullidest. On selge, et sel juhul ei saa ühelgi ruudul olla miini --- seega ei ole miini ka ruudul 44.

Hätta jääb ta samas näites ka järgmisel mängul. Siin erineb mängulaud eelmisest ainult selle võrra, et ruudul numbriga 3 on nüüd kirjas arv 1:

Sellele ülemisele reale vastavat miinide paigutust ehk alumist rida olla ei saa. Tõepoolest, kui ühes ruudu 3 naaberruutudest oleks miin, siis oleks ka ruudus 2 või 4 nullist erinev arv. Juku küsib selle mängu kohta vihjet kaks korda: vastavalt ülalolevale on mõlema vastus !.

Kaks mängu hiljem jääb ta uuesti hätta. Nüüd on mängulaud selline:

Jälle saab näidata, et alumisel real toodud paigutus on ainus võimalik. Seega on ruudul 3 kindlasti miin ja ruudul 91191 kindlasti miini pole.

Kuna teises näites on mõned esimest tüüpi päringud pärast mõnesid teist tüüpi päringuid, siis see test ei saa esineda esimeses testigrupis.

Kuna kolmandas näites on mõne päringu vastus !, siis see test ei saa esineda esimeses ega teises testigrupis.

예제3

  1. 예제 1

    입력
    12
    1 1 1
    1 2 2
    1 3 2
    1 4 2
    1 5 1
    1 6 1
    2 1
    2 2
    2 3
    2 4
    2 5
    2 6
    
    예상 출력
    o
    x
    x
    o
    x
    o
    
  2. 예제 2

    입력
    14
    1 1 1
    1 5 1
    1 2 2
    1 4 2
    1 3 3
    2 2
    2 3
    2 4
    1 2 1
    1 4 1
    1 3 2
    2 2
    2 3
    2 4
    
    예상 출력
    x
    x
    x
    x
    o
    x
    
  3. 예제 3

    입력
    8
    2 44
    1 3 1
    2 1
    2 77
    1 4 1
    1 2 1
    2 3
    2 91191
    
    예상 출력
    o
    !
    !
    x
    o