結果
問題 | No.2064 Smallest Sequence on Grid |
ユーザー |
|
提出日時 | 2023-05-23 21:54:14 |
言語 | PyPy3 (7.3.11) |
結果 |
AC
|
実行時間 | 2,542 ms / 3,000 ms |
コード長 | 2,174 bytes |
コンパイル時間 | 954 ms |
コンパイル使用メモリ | 86,800 KB |
実行使用メモリ | 215,256 KB |
最終ジャッジ日時 | 2023-08-24 21:20:52 |
合計ジャッジ時間 | 30,099 ms |
ジャッジサーバーID (参考情報) |
judge11 / judge15 |
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 248 ms
92,060 KB |
testcase_01 | AC | 258 ms
92,236 KB |
testcase_02 | AC | 250 ms
92,408 KB |
testcase_03 | AC | 248 ms
92,400 KB |
testcase_04 | AC | 249 ms
92,316 KB |
testcase_05 | AC | 248 ms
92,216 KB |
testcase_06 | AC | 249 ms
92,452 KB |
testcase_07 | AC | 248 ms
92,352 KB |
testcase_08 | AC | 256 ms
92,872 KB |
testcase_09 | AC | 259 ms
92,784 KB |
testcase_10 | AC | 265 ms
92,976 KB |
testcase_11 | AC | 263 ms
93,544 KB |
testcase_12 | AC | 258 ms
93,276 KB |
testcase_13 | AC | 261 ms
93,336 KB |
testcase_14 | AC | 261 ms
93,528 KB |
testcase_15 | AC | 263 ms
93,144 KB |
testcase_16 | AC | 262 ms
93,336 KB |
testcase_17 | AC | 356 ms
103,260 KB |
testcase_18 | AC | 340 ms
103,280 KB |
testcase_19 | AC | 341 ms
102,912 KB |
testcase_20 | AC | 1,876 ms
154,860 KB |
testcase_21 | AC | 2,071 ms
158,156 KB |
testcase_22 | AC | 1,371 ms
136,908 KB |
testcase_23 | AC | 1,442 ms
140,132 KB |
testcase_24 | AC | 1,426 ms
139,896 KB |
testcase_25 | AC | 1,446 ms
140,020 KB |
testcase_26 | AC | 2,542 ms
179,224 KB |
testcase_27 | AC | 2,499 ms
179,192 KB |
testcase_28 | AC | 326 ms
103,288 KB |
testcase_29 | AC | 2,230 ms
215,256 KB |
testcase_30 | AC | 341 ms
102,164 KB |
ソースコード
import sys, re from fractions import Fraction from math import ceil, floor, sqrt, pi, factorial, gcd from copy import deepcopy from collections import Counter, deque, defaultdict from heapq import heapify, heappop, heappush from itertools import accumulate, product, combinations, combinations_with_replacement, permutations from bisect import bisect, bisect_left, bisect_right from functools import reduce, lru_cache from decimal import Decimal, getcontext, ROUND_HALF_UP def i_input(): return int(input()) def i_map(): return map(int, input().split()) def i_list(): return list(i_map()) def i_row(N): return [i_input() for _ in range(N)] def i_row_list(N): return [i_list() for _ in range(N)] def s_input(): return input() def s_map(): return input().split() def s_list(): return list(s_map()) def s_row(N): return [s_input for _ in range(N)] def s_row_str(N): return [s_list() for _ in range(N)] def s_row_list(N): return [list(s_input()) for _ in range(N)] def lcm(a, b): return a * b // gcd(a, b) def get_distance(x1, y1, x2, y2): d = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) return d def rotate(table): n_fild = [] for x in zip(*table[::-1]): n_fild.append(x) return n_fild sys.setrecursionlimit(10 ** 7) INF = float('inf') MOD = 10 ** 9 + 7 MOD2 = 998244353 alpa = 'abcdefghijklmnopqrstuvwxyz' ALPA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' #input = sys.stdin.readline def main(): H, W = i_map() S = [input() for i in range(H)] move = [[0, 1], [1, 0]] ans = [] ans.append(S[0][0]) nums = [[0, 0]] for i in range(H+W-1): nxts = [set() for i in range(26)] for x, y in nums: for a, b in move: nx = a + x ny = b + y if not (0<=nx<H and 0<=ny<W): continue p = ord(S[nx][ny]) - 97 nxts[p].add((nx, ny)) nnums = [] for i in range(26): if len(nxts[i]) > 0: nnxts = list(nxts[i]) ans.append(alpa[i]) for a, b in nnxts: nnums.append([a, b]) break nums = nnums print(''.join(ans)) if __name__ == '__main__': main()