ã‚ãªãŸã®å‹äººã®è€ƒå¤å¦è€…ãŒéºè·¡ã‚’発掘ã—ã¦ã„ãŸï¼Ž ã‚る日,彼ã¯æ€ªã—ã’ãªè¨˜å·ã®ç¾…列ãŒåˆ»ã¾ã‚Œã¦ã„る石盤を大é‡ã«ç™ºè¦‹ã—ãŸï¼Ž å½¼ã¯ã“ã®å¤§ç™ºè¦‹ã«å¤§å–œã³ã—,ã™ãã•ã¾çŸ³ç›¤ã«åˆ»ã¾ã‚Œã¦ã„る記å·ã®è§£èªã‚’始ã‚ãŸï¼Ž 何週間ã«ã‚‚ã‚ãŸã‚‹å½¼ã®è§£èªã®åŠªåŠ›ã®çµæžœï¼Œ ã©ã†ã‚„らã“れらã®çŸ³ç›¤ã«ã¯å¤‰æ•°ãƒ»æ¼”ç®—å・カッコã®çµ„ã¿åˆã‚ã›ã§æˆã‚Šç«‹ã£ã¦ã„ã‚‹ æ•°å¼ã®ã‚ˆã†ãªã‚‚ã®ãŒåˆ»ã¾ã‚Œã¦ã„ã‚‹ã“ã¨ãŒã‚ã‹ã£ãŸï¼Ž 発掘ã—ãŸçŸ³ç›¤ã¨éºè·¡ã«é–¢ã‚る文献を調ã¹ã¦ã„ãã†ã¡ã«å½¼ã¯ã•ã‚‰ã«ï¼Œ ãã‚Œãžã‚Œã®çŸ³ç›¤ã§æ¼”ç®—åã®çµåˆè¦å‰‡ãŒç•°ãªã£ã¦ãŠã‚Šï¼Œ ãã‚Œãžã‚Œã®çŸ³ç›¤ã®å…ˆé ã«æ¼”ç®—åã®çµåˆè¦å‰‡ãŒè¨˜ã•ã‚Œã¦ã„るらã—ã„ã“ã¨ã‚’çªãã¨ã‚ãŸï¼Ž ã—ã‹ã—,彼ã¯æ•°å¦ãŒè‹¦æ‰‹ã§ã‚ã‚‹ãŸã‚,演算åã®çµåˆè¦å‰‡ã‚’見ã¦ã‚‚ ã™ãã«ã¯æ•°å¼ãŒã©ã®ã‚ˆã†ã«çµåˆã—ã¦ã„ã‚‹ã‹ãŒã‚ã‹ã‚‰ãªã‹ã£ãŸï¼Ž ãã“ã§å½¼ã¯ï¼Œå„ªã‚ŒãŸã‚³ãƒ³ãƒ”ュータサイエンティストã§ã‚ã‚‹ã‚ãªãŸã« 「石盤ã«æ›¸ã‹ã‚Œã¦ã„ã‚‹æ•°å¼ãŒã©ã®ã‚ˆã†ã«çµåˆã—ã¦ã„ã‚‹ã‹ã‚’調ã¹ã¦ã»ã—ã„〠ã¨ä¾é ¼ã—ã¦ããŸï¼Ž ã‚ãªãŸã¯ï¼Œå½¼ã‚’手助ã‘ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã ã‚ã†ã‹ï¼Ÿ
æ•°å¼ä¸ã«ç¾ã‚Œã‚‹æ¼”ç®—åã«ã¯å„ªå…ˆé †ä½ãŒå®šã‚られã¦ãŠã‚Šï¼Œ
å„ªå…ˆé †ä½ã®é«˜ã„演算åã‹ã‚‰é †ã«çµåˆã—ã¦ã„ã.
åŒä¸€å„ªå…ˆé †ä½ã‚’ã‚‚ã¤æ¼”ç®—åã«ã¯ãã‚Œãžã‚Œçµåˆæ–¹å‘ãŒå®šã‚られã¦ãŠã‚Šï¼Œ
å·¦ã‹ã‚‰å³ã«çµåˆã™ã‚‹å ´åˆã¯å·¦ã«ã‚る演算åã‹ã‚‰é †ã«ï¼Œ
å³ã‹ã‚‰å·¦ã«çµåˆã™ã‚‹å ´åˆã¯å³ã«ã‚る演算åã‹ã‚‰é †ã«çµåˆã—ã¦ã„ã.
例ãˆã°ï¼Œ +
より *
ã®æ–¹ãŒå„ªå…ˆé †ä½ãŒé«˜ã,
*
ãŒå·¦ã‹ã‚‰å³ã«çµåˆã™ã‚‹å ´åˆï¼Œ
å¼ a+b*c*d
㯠(a+((b*c)*d))
ã®ã‚ˆã†ã«çµåˆã™ã‚‹ï¼Ž
サンプル入力ã«ã‚‚ä»–ã®ä¾‹ãŒã„ãã¤ã‹æŒ™ã’られã¦ã„ã‚‹ã®ã§å‚ç…§ã®ã“ã¨ï¼Ž
入力ã«ä¸Žãˆã‚‰ã‚Œã‚‹æ•°å¼ã¯ï¼Œä»¥ä¸‹ã® Expr ã§å®šç¾©ã•ã‚Œã‚‹ã‚ˆã†ãªæ–‡å—列ã§ã‚る. ã“ã®å®šç¾©ã«ãŠã„ã¦ï¼ŒVar ã¯å¤‰æ•°ã‚’表ã—, Op ã¯æ¼”ç®—åを表ã™ï¼Ž
Expr | ::= | Var |
| | Expr Op Expr | |
| |
“( ”
Expr
“) ”
|
|
Var | ::= |
“a ” |
“b ” |
... |
“z ”
|
Op | ::= |
“+ ” |
“- ” |
“* ” |
“/ ” |
“< ” |
“> ” |
“= ” |
“& ” |
“| ” |
“^ ”
|
演算åã¯ã™ã¹ã¦äºŒé …演算åã§ã‚り,å˜é …演算åã‚„ãã®ä»–ã®æ¼”ç®—åã¯å˜åœ¨ã—ãªã„.
入力ã¯ï¼Œã„ãã¤ã‹ã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã‹ã‚‰ãªã‚‹ï¼Ž 入力ã®å…ˆé è¡Œã«ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆæ•° D (D ≤ 100) ãŒä¸Žãˆã‚‰ã‚Œï¼Œ 以é™ã®è¡Œã« D 個ã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆãŒç¶šã.
ãã‚Œãžã‚Œã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã¯ï¼Œæ¬¡ã®ã‚ˆã†ãªãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
(演算åã®çµåˆè¦å‰‡ã®å®šç¾©ï¼‰
(クエリã®å®šç¾©ï¼‰
演算åã®çµåˆè¦å‰‡ã®å®šç¾©ã¯ï¼Œä»¥ä¸‹ã®ã‚ˆã†ãªãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Žã“ã®å®šç¾©ã«ãŠã„ã¦ï¼ŒG ã¯æ¼”ç®—åグループã®æ•°ã‚’表ã™æ•°ã§ã‚る.
G
(演算åグループ1 ã®å®šç¾©ï¼‰
(演算åグループ2 ã®å®šç¾©ï¼‰
...
(演算åグループG ã®å®šç¾©ï¼‰
演算åã¯ï¼Œçµåˆã®å„ªå…ˆé †ä½ã”ã¨ã«ã‚°ãƒ«ãƒ¼ãƒ—ã«åˆ†ã‘られã¦ã„る. åŒä¸€ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã™ã‚‹æ¼”ç®—åã¯çµåˆã®å„ªå…ˆé †ä½ãŒç‰ã—ã, グループã®å®šç¾©ãŒå¾Œã«ç¾ã‚Œã‚‹æ¼”ç®—åã®æ–¹ãŒ å‰ã«ç¾ã‚Œã‚‹æ¼”ç®—åよりçµåˆã®å„ªå…ˆé †ä½ãŒé«˜ã„.
ãã‚Œãžã‚Œã®æ¼”ç®—åグループã¯ï¼Œä»¥ä¸‹ã®ã‚ˆã†ã«å®šç¾©ã•ã‚Œã‚‹ï¼Ž
A M p1 p2 ... pM
A ã¯æ¼”ç®—åã®çµåˆæ–¹å‘を表ã™æ–‡å—ã§ï¼Œ
“L
” ã‹ “R
” ã®
ã„ãšã‚Œã‹ã§ã‚る.
“L
” ã¯å·¦ã‹ã‚‰å³ã«çµåˆã™ã‚‹ã“ã¨ã‚’表ã—,
“R
” ã¯å³ã‹ã‚‰å·¦ã«çµåˆã™ã‚‹ã“ã¨ã‚’表ã™ï¼Ž
M (M > 0)
ã¯æ¼”ç®—åグループã«å«ã¾ã‚Œã‚‹æ¼”ç®—åã®æ•°ã§ã‚り,
pi (1 ≤ i ≤ M)
ã¯ã‚°ãƒ«ãƒ¼ãƒ—ã«å«ã¾ã‚Œã‚‹æ¼”ç®—åを表ã™æ–‡å—ã§ã‚る.
åŒã˜æ¼”ç®—åãŒã‚°ãƒ«ãƒ¼ãƒ—内ã«2度ç¾ã‚Œã‚‹ã“ã¨ã¯ãªã,ã¾ãŸï¼Œ
データセット内ã«ã‚°ãƒ«ãƒ¼ãƒ—ã‚’ã¾ãŸãŒã£ã¦
åŒã˜æ¼”ç®—åãŒ2度ç¾ã‚Œã‚‹ã“ã¨ã‚‚ãªã„.
演算åã®å®šç¾©ã«ã¯ï¼Œä¸Šè¨˜ã® Op ã§å®šç¾©ã•ã‚ŒãŸæ¼”ç®—åã®ã¿ãŒç¾ã‚Œã‚‹ï¼Ž 1ã¤ã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã«ãŠã„ã¦ï¼Œå¿…ãš1ã¤ä»¥ä¸Šã®æ¼”ç®—åãŒå®šç¾©ã•ã‚Œã‚‹ã¨ä»®å®šã—ã¦ã‚ˆã„.
クエリã®å®šç¾©ã¯ä»¥ä¸‹ã®ã‚ˆã†ãªãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
N
e1
e2
...
eN
N (0 < N ≤ 50) ã¯ã‚¯ã‚¨ãƒªã¨ã—ã¦ä¸Žãˆã‚‰ã‚Œã‚‹ æ•°å¼ã®æ•°ã§ã‚る. ei (1 ≤ i ≤ N) ã¯ä¸Šè¨˜ã® Expr ã®å®šç¾©ã‚’満ãŸã™ã‚ˆã†ãª å¼ã‚’表ã™ç©ºã§ãªã„æ–‡å—列ã§ã‚る. ei ã®é•·ã•ã¯ãŸã‹ã ã‹100æ–‡å—ã§ã‚り, 当該データセットã§å®šç¾©ã•ã‚Œã¦ã„ãªã„演算åã¯å‡ºç¾ã—ãªã„ã‚‚ã®ã¨ä»®å®šã—ã¦ã‚ˆã„.
データセットã”ã¨ã«ï¼Œ クエリã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸãã‚Œãžã‚Œã®å¼ã«ã¤ã„ã¦ï¼Œ å¼ä¸ã®å„演算åã«ã¤ã„ã¦å¿…ãš1ã¤ã®ã‚«ãƒƒã‚³ã®çµ„を用ã„㦠ã™ã¹ã¦ã®äºŒé …演算をæ£ã—ã囲ã¿ï¼Œ 演算åã®çµåˆã‚’表ç¾ã—ãŸæ–‡å—列を出力ã›ã‚ˆï¼Ž 入力ã®å¼ã«ç¾ã‚Œã‚‹å¤‰æ•°ã‚„演算åã®é †åºã‚’変更ã—ã¦ã¯ãªã‚‰ãªã„.
ãã‚Œãžã‚Œã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã®é–“ã«ã¯ç©ºè¡Œã‚’出力ã›ã‚ˆï¼Ž 出力ã®æœ«å°¾ã«ç©ºè¡Œã‚’出力ã—ã¦ã¯ãªã‚‰ãªã„.
2 3 R 1 = L 2 + - L 2 * / 6 a+b*c-d (p-q)/q/d a+b*c=d-e t+t+t+t+t s=s=s=s=s (((((z))))) 3 R 3 = < > L 3 & | ^ L 4 + - * / 1 a>b*c=d<e|f+g^h&i<j>k
((a+(b*c))-d) (((p-q)/q)/d) ((a+(b*c))=(d-e)) ((((t+t)+t)+t)+t) (s=(s=(s=(s=s)))) z (a>((b*c)=(d<((((e|(f+g))^h)&i)<(j>k)))))