結果
| 問題 | 
                            No.1588 Connection
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2021-07-08 23:21:10 | 
| 言語 | Kuin  (KuinC++ v.2021.9.17)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 81 ms / 2,000 ms | 
| コード長 | 1,094 bytes | 
| コンパイル時間 | 2,314 ms | 
| コンパイル使用メモリ | 148,224 KB | 
| 実行使用メモリ | 25,476 KB | 
| 平均クエリ数 | 367.41 | 
| 最終ジャッジ日時 | 2024-09-16 12:39:41 | 
| 合計ジャッジ時間 | 5,338 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge6 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 31 | 
ソースコード
func main()
	var n: int :: cui@inputInt()
	var m: int :: cui@inputInt() - 2
	var stage: [][]char :: #[n, n]char
	for i(0, n - 1)
		do stage[i] :: ['?'].repeat(n)
	end for
	do stage[0][0] :: 'B'
	do stage[n - 1][n - 1] :: 'B'
	var x: int :: 0
	var y: int :: 0
	var dir: int :: 3
	var dx: []int :: [1, 0, -1, 0]
	var dy: []int :: [0, 1, 0, -1]
	var cnt: int :: 0
	while loop(true)
		do cnt :+ 1
		if(cnt = 1000000)
			do cui@print("No\n")
			ret
		end if
		var nx: int :: x + dx[dir]
		var ny: int :: y + dy[dir]
		if(nx < 0 | n <= nx | ny < 0 | n <= ny)
			do dir :: (dir + 1) % 4
			skip loop
		end if
		switch(stage[ny][nx])
		case '?'
			do cui@print("\{nx + 1} \{ny + 1}\n")
			do cui@flush()
			var c: char :: cui@input()[0]
			if(c = '-')
				ret
			end if
			do stage[ny][nx] :: c
			if(c = 'B')
				do m :- 1
				if(nx + ny = 2 * n - 3)
					do cui@print("Yes\n")
					ret
				end if
			end if
			if(m = 0)
				do cui@print("No\n")
				ret
			end if
		case 'W'
			do dir :: (dir + 1) % 4
		case 'B'
			do x :: nx
			do y :: ny
			do dir :: (dir + 3) % 4
		end switch
	end while
end func