英世åšå£«ã¯æœªçŸ¥ã®ç—…原èŒã‚’発見ã—ã¾ã—ãŸã€‚ã“ã®ç—…原èŒã¯ã€ã‚¢ã‚¯ãƒ€ãƒžã‚ンã¨ã‚¼ãƒ³ãƒ€ãƒžã‚ンã¨å‘¼ã°ã‚Œã‚‹äºŒç¨®é¡žã®èŒãŒã€ä¸€ç›´ç·šã«é€£ãªã£ãŸéŽ–状ã®æ§‹é€ ã‚’ã—ã¦ã„ã¾ã™ã€‚人類ã®ãŸã‚ã«ã€ã“ã®ç—…原èŒã‚’無害化ã—ãŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
ã“ã®ç—…原èŒã¯ã€é•·ã•ãŒï¼’以下ã«ãªã‚‹ã¨åŠ›ãŒå¼±ã¾ã‚Šã€å…疫力ã«ã‚ˆã£ã¦ç„¡å®³åŒ–ã•ã‚Œã‚‹ã“ã¨ãŒåˆ†ã‹ã£ã¦ã„ã¾ã™ã€‚英世åšå£«ã¯ã€ã“ã®ç—…原èŒã‚’ä»»æ„ã®å ´æ‰€ã§åˆ‡æ–ã—ã¦ã€å‰åŠã¨å¾ŒåŠã®ï¼’ã¤ã®éŽ–ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸã€ï¼’ã¤ã®éŽ–を連çµã—ã¦ï¼‘ã¤ã®éŽ–ã«ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
ã—ã‹ã—注æ„ã—ãªã‘ã‚Œã°ã„ã‘ãªã„ã®ã¯ã€ã‚¢ã‚¯ãƒ€ãƒžã‚ンã®æ•°ãŒå¤šã„鎖ã¯ãã‚ã‚ã¦æœ‰å®³ã ã¨ã„ã†ã“ã¨ã§ã™ã€‚ã‚る鎖ã«ãŠã„ã¦ã‚¢ã‚¯ãƒ€ãƒžã‚ンã®æ•°ãŒã‚¼ãƒ³ãƒ€ãƒžã‚ンã®æ•°ã‚ˆã‚Šã‚‚多ããªã‚‹ã¨ã€ãã®çž¬é–“アクダマã‚ンã¯ç„¡åˆ¶é™ã«å¢—殖を始ã‚ã¾ã™ã€‚ã“ã‚Œã¯é•·ã•ï¼’以下ã®éŽ–ã«ã¤ã„ã¦ã‚‚例外ã§ã¯ãªã„ã®ã§ã€æ…Žé‡ã«éŽ–を切æ–ã—ã¦ã„ã‹ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。
ã©ã®çž¬é–“ã«ãŠã„ã¦ã‚‚アクダマã‚ンã®æ•°ã®æ–¹ãŒå¤šã„よã†ãªéŽ–を作るã“ã¨ãªãã€ä¸€æœ¬ã®éŽ–ã‚’é•·ã•ï¼’以下ã«ã—ã¦ç„¡å®³åŒ–ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã—ょã†ã‹ã€‚英世åšå£«ã¯ã€åŠ©æ‰‹ã§ã‚ã‚‹ã‚ãªãŸã«ç„¡å®³åŒ–ãŒå¯èƒ½ã‹ã©ã†ã‹åˆ¤å®šã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã™ã‚‹ã‚ˆã†æŒ‡ç¤ºã—ã¾ã—ãŸã€‚無害化ãŒå¯èƒ½ãªã‚‰ã°ãã®æ“作を出力ã—ã€ä¸å¯èƒ½ãªã‚‰ã°ä¸å¯èƒ½ã§ã‚ã‚‹ã¨å‡ºåŠ›ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã—ã¦ãã ã•ã„。ãŸã ã—ã€ãã®æ“作ã®ã‚¹ãƒ†ãƒƒãƒ—æ•°ãŒæœ€å°ã§ã‚ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。
入力ã¯ä»¥ä¸‹ã®å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
Q str1 str2 : strQ
1 行目ã«ç—…原èŒã®æ•° Q (1 ≤ Q ≤ 300) ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚続ã Q è¡Œã«å„病原èŒã®åˆæœŸçŠ¶æ…‹ã‚’表㙠'o' (ゼンダマã‚ン) ãŠã‚ˆã³ 'x' (アクダマã‚ン) ã‹ã‚‰ãªã‚‹ï¼‘ã¤ã®æ–‡å—列 stri ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚æ–‡å—列 stri ã®é•·ã•ã¯ 1 以上 100 以下ã§ã‚る。
stri ã«ã¤ã„ã¦ã€è¦æ±‚を満ãŸã™åˆ‡æ–・çµåˆæ“作ã®åˆ—ãŒå˜åœ¨ã™ã‚‹å ´åˆã€å‡ºåŠ›ã®æœ€åˆã®è¡Œã«ã¯ãã®æ“作列ã®é•·ã•ã‚’表ã™æ•´æ•° n を出力ã—ã€ç¶šã n è¡Œã«æ“作ã®å†…容を1行ã«ï¼‘æ“作ãšã¤ã€æœ€åˆã®æ“作ã‹ã‚‰é †ã«å‡ºåŠ›ã™ã‚‹ã€‚
切æ–æ“作ã¯ä»¥ä¸‹ã®å½¢å¼ã§è¡¨ã™ã“ã¨ã€‚
split a p
a ã¯åˆ‡æ–ã™ã‚‹éŽ–ã®è˜åˆ¥ç•ªå·ã‚’表ã™æ•´æ•°ã§ã‚ã‚Šã€p ã¯ãã®éŽ–を切æ–ã™ã‚‹ä½ç½®ã§ã‚る。ã“ã®æ“作ã®çµæžœã€éŽ– a ã¯å…ˆé ã‹ã‚‰ p 番目(先é ã‚’ 0 ã‹ã‚‰å§‹ã‚る通ã—番å·)ã®èŒã®ç›´å¾Œã§åˆ‡æ–ã•ã‚Œã‚‹ã€‚æ–°ã—ãã§ãã‚‹ï¼’ã¤ã®éŽ–ã®ã†ã¡ã€å‰åŠã®ã‚‚ã®ã«è˜åˆ¥ç•ªå· m+1 ãŒã€å¾ŒåŠã®ã‚‚ã®ã«è˜åˆ¥ç•ªå· m+2 ãŒä»˜ä¸Žã•ã‚Œã‚‹ï¼ˆã“ã“ã§ã€m ã¯ã“ã‚Œã¾ã§ã«ä»˜ä¸Žã•ã‚ŒãŸæœ€ã‚‚大ããªè˜åˆ¥ç•ªå·ã‚’表ã™ï¼‰ã€‚ã¾ãŸã€éŽ– a ã¯æ¶ˆæ»…ã™ã‚‹ã€‚
çµåˆæ“作ã¯ä»¥ä¸‹ã®å½¢å¼ã§è¡¨ã™ã“ã¨ã€‚
join a b
a, b ã¯çµåˆã™ã‚‹éŽ–ã®è˜åˆ¥ç•ªå·ã‚’表ã™æ•´æ•°ã§ã‚る。ã“ã®æ“作ã®çµæžœã€éŽ– a ã®æœ«å°¾ã«éŽ– b ã®å…ˆé ã‚’çµåˆã—ãŸæ–°ã—ã„鎖ãŒä½œã‚‰ã‚Œã‚‹ã€‚æ–°ã—ã作られãŸéŽ–ã«ã¯ã€è˜åˆ¥ç•ªå· m+1 ãŒä»˜ä¸Žã•ã‚Œã‚‹(ã“ã“ã§ã€m ã¯ã“ã‚Œã¾ã§ã«ä»˜ä¸Žã•ã‚ŒãŸæœ€ã‚‚大ããªè˜åˆ¥ç•ªå·ã‚’表ã™)。ã¾ãŸã€éŽ– a, b ã¯æ¶ˆæ»…ã™ã‚‹ã€‚
入力ã¨ã—ã¦ä¸Žãˆã‚‰ã‚Œã‚‹æœ€åˆã®éŽ–ã«ã¯ã€è˜åˆ¥ç•ªå· 0 ãŒä»˜ä¸Žã•ã‚Œã¦ã„る。
æ“作ã®çµæžœã€å•é¡Œã®è¦æ±‚を満ãŸã™ã‚ˆã†ã«éŽ–ãŒåˆ†è§£ã•ã‚Œã¦ã„ãŸå ´åˆã€ã©ã®ã‚ˆã†ãªæ“作ã§ã‚‚æ£ç”ã¨åˆ¤å®šã•ã‚Œã‚‹ã€‚æ“作列ã®é•·ã•ã‚‚å¿…ãšã—も最çŸã§ã‚ã‚‹å¿…è¦ã¯ãªã„。ãŸã ã—ã€æ“作列ã®é•·ã•ã¯ 20000 以下ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。データセットã«ãŠã„ã¦ã€éŽ–ãŒåˆ†è§£å¯èƒ½ãªå ´åˆã€å¿…ãšã“ã®æ¡ä»¶ã‚’満ãŸã™æ“作列ãŒå˜åœ¨ã™ã‚‹ã“ã¨ãŒä¿è¨¼ã•ã‚Œã‚‹ã€‚
ä¸æ£ãªæ“作列ãŒå‡ºåŠ›ã•ã‚ŒãŸå ´åˆã€èª¤ç”ã¨åˆ¤å®šã•ã‚Œã‚‹ã€‚ä¸æ£ãªæ“作列ã«ã¯ã€ä»¥ä¸‹ã®å ´åˆãŒå«ã¾ã‚Œã‚‹ã€‚
è¦æ±‚を満ãŸã™åˆ‡æ–・çµåˆæ“作ã®åˆ—ãŒå˜åœ¨ã—ãªã„å ´åˆã€"-1"ã¨å‡ºåŠ›ã™ã‚‹ã€‚
6 oooxxxx ooooxxx oxxooxxo ooxx oo ooo
-1 7 split 0 0 join 2 1 split 3 4 split 4 0 join 7 6 split 8 2 split 9 0 3 split 0 1 split 2 1 split 4 1 -1 0 1 split 0 0
例ãˆã°ã€å…¥åŠ›ä¾‹ã®ï¼’番目ã®ç—…åŽŸèŒ ooooxxx ã¯ã€
split 0 0 ã«ã‚ˆã‚Š o(1) 㨠oooxxx(2) ãŒã§ãる。ã“ã“ã§ã€()内ã®æ•°å—ã¯è˜åˆ¥ç•ªå·ã‚’表ã™ã€‚
join 2 1 ã«ã‚ˆã‚Š oooxxxo(3) ãŒã§ã 1 㨠2 ã¯æ¶ˆæ»…ã™ã‚‹ã€‚
split 3 4 ã«ã‚ˆã‚Š oooxx(4) 㨠xo(5) ãŒã§ãる。ã“ã®ã¨ã{ oooxx(4), xo(5) }ã®éŽ–ãŒå˜åœ¨ã™ã‚‹ã€‚
split 4 0 ã«ã‚ˆã‚Š o(6) 㨠ooxx(7) ãŒã§ãる。{ xo(5), o(6), ooxx(7)}
join 7 6 ã«ã‚ˆã‚Š ooxxo(8) ãŒã§ãる。{ xo(5), ooxxo(8)}
split 8 2 ã«ã‚ˆã‚Š oox(9) 㨠xo(10) ãŒã§ãる。{xo(5), oox(9), xo(10) }
split 9 0 ã«ã‚ˆã‚Š { xo(5), xo(10), o(11), ox(12) } ã¨ãªã£ã¦çµ‚了ã™ã‚‹ã€‚