Logo
(追記) (追記ここまで)

29899번 - Linesweeper 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
4 초 1024 MB62150.000%

문제

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 $i$ 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 $Q$ päringut, mis võivad olla kahest tüübist:

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

Kirjutada programm, mis nendele päringutele vastab.

입력

Sisendi esimesel real on täisarv $Q$ (1ドル \le Q \le 2 \cdot 10^5$).

Järgneb $Q$ rida, millest igaüks kirjeldab ühte päringut. Rida on kas kujul 1 i c (1ドル \le i \le 10^5,ドル 0ドル \le c \le 3$) või 2 i (1ドル \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, !, ?.

제한

예제 입력 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

예제 출력 1

o
x
x
o
x
o

예제 입력 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

예제 출력 2

x
x
x
x
o
x

예제 입력 3

8
2 44
1 3 1
2 1
2 77
1 4 1
1 2 1
2 3
2 91191

예제 출력 3

o
!
!
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.

출처

Olympiad > Estonian Informatics Olympiad > 2020-21 > Preliminary Round 5번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /