結果

問題 No.86 TVザッピング(2)
ユーザー 6soukiti29
提出日時 2017-08-11 08:02:23
言語 Nim
(2.2.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,506 bytes
コンパイル時間 923 ms
コンパイル使用メモリ 64,472 KB
最終ジャッジ日時 2025-06-20 13:59:57
合計ジャッジ時間 1,219 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(3, 34) Error: tuple expected for tuple unpacking, but got 'seq[int]'

ソースコード

diff #

import sequtils,strutils
var M,N : int
(M, N) = stdin.readline.split.map(parseInt)
var
    hyou = newSeq[string](M + 2,)
    D = [[1,0],[0,-1],[-1,0],[0,1]]
    cnt : int
    ans : bool
    cntd : int
    flag : array[102,array[102,int]]
    
hyou[0] = repeat('#',M + 2)
hyou[M + 1] = repeat('#',M + 2)

for n in 1..M:
    hyou[n] = '#' & stdin.readline & '#'




proc tansaku(i,j : int):bool=
    for d2 in 0..3:
        var
            x = i
            y = j
            cntf = 0
            cntf2 = 0
            nx,ny : int
        cnt += 1
        var d = d2
        while cntf <= cntd:
            nx = x + D[d][0]
            ny = y + D[d][1]
            if nx == i and ny == j and cntf == cntd - 1:
                return true
            elif hyou[ny][nx] == '.' and flag[ny][nx] < cnt:
                flag[ny][nx] = cnt
                cntf += 1
                x = nx
                y = ny
                cntf2 = 0
            elif cntf2 == 0:
                cntf2 += 1
                d = (d + 1) mod 4
            else:
                break
    return false
            
        
for x in 1..N:
    for y in 1..M:
        if hyou[y][x] == '.':
            cntd += 1

block tansaku:
    if cntd > 4 * (M + N):
        break tansaku
    for x in 1..N:
        for y in 1..M:
            if hyou[y][x] == '.':
                cnt += 10
                if tansaku(x,y):
                    ans = true
                    break tansaku
if ans:
    echo "YES"
else:
    echo "NO"
            
0