結果

問題 No.331 CodeRunnerでやれ
ユーザー matsu7874matsu7874
提出日時 2015-12-25 01:11:58
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
TLE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,929 bytes
コンパイル時間 92 ms
コンパイル使用メモリ 11,032 KB
実行使用メモリ 24,972 KB
平均クエリ数 2.47
最終ジャッジ日時 2023-09-23 23:01:03
合計ジャッジ時間 8,122 ms
ジャッジサーバーID
(参考情報)
judge12 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 181 ms
24,448 KB
testcase_01 AC 180 ms
24,972 KB
testcase_02 AC 231 ms
9,300 KB
testcase_03 TLE -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
import collections

def navi(y,x,dy,dx,path):
    move = []
    ty = -1
    tx = -1
    while path:
        ty,tx = path.pop()
        if y+dy == ty and x+dx==tx:
            move += ['F']
        elif y-dy == ty and x-dx==tx:
            move += ['B']
        elif y-dx == ty and x+dy==tx:
            move += ['L','F']
        elif y+dx == ty and x-dy==tx:
            move += ['R','F']
    return move

def accessible(sy,sx,ty,tx,maze):
    visited = [[False for j in range(40)] for i in range(40)]
    path = [[[] for j in range(40)] for i in range(40)]
    visited[sy][sx] = True
    dq = collections.deque()
    dq.append((sy,sx))
    D = [(1,0),(-1,0),(0,1),(0,-1)]
    while dq:
        y,x = dq.popleft()
        if y==ty and x ==tx:
            return path[ty][tx]
        for dy,dx in D:
            if 0<=y+dy<40 and 0<=x+dx<40 and not visited[y+dy][x+dx]:
                dq.append((y+dy,x+dx))
                visited[y+dy][x+dx] = True
                path[y+dy][x+dx] = path[y][x][:]+[(y,x)]
    return []


maze = [[0 for j in range(40)] for i in range(40)]
maze[19][19] = 1
posx = 19
posy = 19
dx = 0
dy = -1
tx = 19
ty = 19
path = []
move = []
while True:
    s = input()
    if s == 'Merry Christmas!':
        exit()
    s = int(s)
    if s > 17:
        print('F')
        sys.stdout.flush()
    elif s == 0:
        maze[posy+dy][posx+dx] = -1
        print('L')
        sys.stdout.flush()
    else:
        for i in range(1,s+1):
            maze[posy+dy*i][posx+dx*i] = 1
        if move:
            print(move.pop())
            sys.stdout.flush()
        else:
            i = 0
            j = 0
            while not path:
                path = accessible(posy,posx,i,j,maze)
                j += 1
                if j == 40:
                    j = 0
                    i += 1
            move = navi(posy,posx,dy,dx,path)
            print(move.pop())
            sys.stdout.flush()
0