å‹é”ã®ã„ãªã„ãã¤ãã®ãƒœãƒ–ã¯ï¼Œä»Šæ—¥ã¯ä¸€äººã§ã™ã”ã‚ãéŠã³ã‚’ã—ã¦éŽã”ã™ã“ã¨ã«ã—ãŸï¼Ž å„é¢ã«æ•´æ•°a_1,a_2,a_3,a_4,a_5,a_6ãŒæ›¸ã‹ã‚ŒãŸ6é¢ãƒ€ã‚¤ã‚¹ã¨ï¼Œé§’ã¨ï¼Œç›´ç·šä¸Šã«M個ã®ãƒžã‚¹ãŒã‚ã‚Š å·¦ã‹ã‚‰é †ã«1ã‹ã‚‰Mã¾ã§ã®ç•ªå·ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸã™ã”ã‚ã盤を用ã„ã‚‹ã“ã¨ã«ã—ãŸï¼Ž ã™ã”ã‚ã盤ã®å„マスã«ã¯æŒ‡ç¤ºãŒæ•°å—ã§æ›¸ã‹ã‚Œã¦ãŠã‚Šï¼Œi番目ã®ãƒžã‚¹ã«ã¯æ•°å—N_iãŒæ›¸ã‹ã‚Œã¦ã„る. ã“ã‚Œã¯ï¼Œãã®å€¤ãŒæ£ãªã‚‰å³ï¼Œè² ãªã‚‰å·¦ã«ï¼Œãã®çµ¶å¯¾å€¤ã ã‘駒を移動ã›ã‚ˆã¨ã„ã†æ„味ã§ã‚る. ã™ãªã‚ã¡ï¼Œi+N_i番目ã®ãƒžã‚¹ã«é§’を移動ã›ã‚ˆã¨ã„ã†æ„味ã§ã‚る. ボブã¯ï¼Œä»¥ä¸‹ã®ã‚ˆã†ã«ã—ã¦ã™ã”ã‚ãéŠã³ã‚’ã™ã‚‹ï¼Žã¾ãšé§’をスタート地点ã«ç½®ã. 次ã«ã‚µã‚¤ã‚³ãƒã‚’振り,サイコãƒãŒå‡ºãŸç›®ã®æ•°ã‚’見ã¦ï¼Œé§’を「ç¾åœ¨ã®ãƒžã‚¹ã‹ã‚‰å³ã«ç§»å‹•ã™ã‚‹ã€ã‹ 「左ã«ç§»å‹•ã™ã‚‹ã€ã‹ã€Œç¾åœ¨ã®ãƒžã‚¹ã«ç•™ã¾ã‚‹ã€ã‹ã‚’é¸æŠžã™ã‚‹ã“ã¨ãŒã§ãる. マスã‹ã‚‰ç§»å‹•ã™ã‚‹å ´åˆã¯ï¼Œã‚µã‚¤ã‚³ãƒã®å‡ºç›®ã®è·é›¢ã ã‘駒を移動ã—ã¦ï¼Œç§»å‹•ã—ãŸå…ˆã®ãƒžã‚¹ã®æŒ‡ç¤ºã«å¾“ã†ï¼Ž 指示ã«å¾“ã£ã¦ç§»å‹•ã—ãŸå…ˆã®ãƒžã‚¹ã®æŒ‡ç¤ºã«ã¯å¾“ã‚ãªã„. 以後,ボブã¯ä¸Šè¨˜ã®ã‚ˆã†ã«ã‚µã‚¤ã‚³ãƒã‚’振ã£ã¦é§’を移動ã™ã‚‹ã“ã¨ã‚’ç¹°ã‚Šè¿”ã™ï¼Ž 移動ã—ãŸçµæžœã™ã”ã‚ã盤ã®å¤–ã«é§’ãŒå‡ºã¦ã—ã¾ã£ãŸã‚‰ãƒœãƒ–ã®è² ã‘ã§ã‚り,誤ç”(Wrong Answer)ã¨åˆ¤å®šã•ã‚Œã‚‹ï¼Ž ã“ã®å•é¡Œã®ç›®çš„ã¯ã“ã®ã™ã”ã‚ãをゴールã™ã‚‹ã“ã¨ã§ã‚る.サイコãƒã‚’振る回数ã¯3000回以下ã¨ã™ã‚‹ï¼Ž
入力ã¯ä»¥ä¸‹ã®å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
M a_1 a_2 a_3 a_4 a_5 a_6 s g N_1 ... N_M
Mã¯ã™ã”ã‚ã盤ã®ãƒžã‚¹ã®æ•°ã§ã‚る.
a_1 ... a_6 ã¯ã‚µã‚¤ã‚³ãƒã®å„é¢ã«æ›¸ã‹ã‚Œã¦ã„ã‚‹æ•´æ•°ã®å€¤ã§ã‚る.
sã¨gã¯ãã‚Œãžã‚Œã™ã”ã‚ã盤ã®ã‚¹ã‚¿ãƒ¼ãƒˆã¨ã‚´ãƒ¼ãƒ«ã®ç•ªå·ã§ã‚る.
N_iã¯i番目ã®ãƒžã‚¹ã«æ›¸ã‹ã‚Œã¦ã„る指示ã§ã‚る.
ã“れらã®å…¥åŠ›ã®å¾Œï¼Œ
ã•ã„ã“ã‚を振ã£ãŸçµæžœã‚’表ã™å€¤ dice ãŒæ”¹è¡Œã¨ã¨ã‚‚ã«å¼•ã続ã„ã¦å…¥åŠ›ã‹ã‚‰ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
ã“ã‚Œã¯ï¼Œã‚µã‚¤ã‚³ãƒã‚’振ã£ã¦å‡ºãŸç›®ãŒ adice ã§ã‚ã‚‹ã“ã¨ã‚’表ã™ï¼Ž
ã“ã‚Œã«å¯¾ã—ã¦ï¼Œã‚ãªãŸã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¯é§’を進ã‚ã‚‹ã‹ã©ã†ã‹ã‚’決ã‚,ãã®é¸æŠžã‚’出力ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„.駒をå³ã«ç§»å‹•ã™ã‚‹ãªã‚‰ã° 1
を,左ã«ç§»å‹•ã™ã‚‹ãªã‚‰ã° -1
を,ç¾åœ¨ã®ãƒžã‚¹ã«ç•™ã¾ã‚‹ãªã‚‰ã° 0
を出力ã›ã‚ˆï¼Žå‡ºåŠ›ã®å¾Œã«ã¯æ”¹è¡Œã‚’出力ã›ã‚ˆï¼Ž
ã‚ãªãŸã®ãƒ—ãƒã‚°ãƒ©ãƒ ãŒé€²ã‚€ã‹æˆ»ã‚‹ã‹ç•™ã¾ã‚‹ã‹ã‚’出力ã™ã‚‹ã¨ï¼Œæ¬¡ã®ã‚µã‚¤ã‚³ãƒã‚’振ã£ãŸçµæžœã‚’入力ã‹ã‚‰å—ã‘å–ã‚‹ã“ã¨ãŒã§ãる.ã“れを繰り返ã™ï¼Ž
例ãˆã°C/C++ã§ã¯
scanf("%d", &dice);
ã¨ã—ã¦ã‚µã‚¤ã‚³ãƒã®é¢ã®ç•ªå·ã‚’å—ã‘å–り,ã“ã‚Œã«å¯¾ã—ã¦å·¦ã«ç§»å‹•ã™ã‚‹ãªã‚‰
printf("-1\n"); fflush(stdout);
ã¨ã™ã‚‹ï¼Žæ¬¡ã«ï¼Œ
scanf("%d", &dice);
ã¨ã™ã‚‹ã¨ï¼Œæ¬¡ã®ã‚µã‚¤ã‚³ãƒã®é¢ã®ç•ªå·ã‚’å—ã‘å–ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ï¼Žã™ã”ã‚ãã«ã‚´ãƒ¼ãƒ«ã—ãŸã‚‰ç›´ã¡ã«ãƒ—ãƒã‚°ãƒ©ãƒ を終了ã›ã‚ˆï¼Ž ゴールã«è¾¿ã‚Šç€ãã¾ã§ã«ã‚µã‚¤ã‚³ãƒã‚’振る回数ã¯3000回以下ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„. サイコãƒã‚’振ã£ãŸå›žæ•°ãŒé€”ä¸ã§3000回を超ãˆãŸå ´åˆï¼Œèª¤ç”ã¨åˆ¤å®šã•ã‚Œã‚‹ï¼Ž
ã™ã”ã‚ãã®èª¬æ˜Ž | プãƒã‚°ãƒ©ãƒ ã®å‡ºåŠ› | プãƒã‚°ãƒ©ãƒ ã¸ã®å…¥åŠ› | サイコãƒã®ç›® | 駒ã®ç§»å‹•å¾Œã®ãƒžã‚¹ã®ç•ªå· |
---|---|---|---|---|
10 1 6 2 5 3 4 1 10 0 -1 3 -1 3 -2 -6 -5 -7 0 | ||||
1回目ã®ã‚µã‚¤ã‚³ãƒ | 1 | 1 | ||
1回目ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®å‡ºåŠ› | 0 | 1 | ||
2回目ã®ã‚µã‚¤ã‚³ãƒ | 3 | 2 | ||
2回目ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®å‡ºåŠ› | 1 | 6 | ||
3回目ã®ã‚µã‚¤ã‚³ãƒ | 5 | 3 | ||
3回目ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®å‡ºåŠ› | 0 | 6 | ||
4回目ã®ã‚µã‚¤ã‚³ãƒ | 1 | 1 | ||
4回目ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®å‡ºåŠ› | -1 | 8 | ||
5回目ã®ã‚µã‚¤ã‚³ãƒ | 3 | 2 | ||
5回目ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®å‡ºåŠ› | 1 | 10 |