結果
| 問題 |
No.2402 Dirty Stairs and Shoes
|
| コンテスト | |
| ユーザー |
yassu0320
|
| 提出日時 | 2023-08-05 02:12:54 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 168 ms / 2,000 ms |
| コード長 | 2,221 bytes |
| コンパイル時間 | 220 ms |
| コンパイル使用メモリ | 82,424 KB |
| 実行使用メモリ | 110,784 KB |
| 最終ジャッジ日時 | 2024-12-20 02:47:29 |
| 合計ジャッジ時間 | 5,836 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 32 |
ソースコード
#!/usr/bin/env pypy3
import re
from collections import deque
from inspect import currentframe
from pprint import pprint
from string import ascii_lowercase as letter
from string import ascii_uppercase
from sys import setrecursionlimit, stderr, stdin
from time import sleep as _time_sleep
from typing import Dict, Generic, Iterable, Iterator, List, Optional, Set, Tuple, TypeVar, Union
try:
import pypyjit
pypyjit.set_param('max_unroll_recursion=-1')
except ModuleNotFoundError:
...
INF: int = (1 << 62) - 1
MOD1000000007 = 10**9 + 7
MOD998244353 = 998244353
setrecursionlimit(500_000) # 5*10**5
readline = stdin.readline
input = lambda: stdin.readline().rstrip('\r\n')
def copy2d(a: list) -> list:
return [[y for y in x] for x in a]
def copy3d(a: list) -> list:
return [[[z for z in y] for y in x] for x in a]
def flattern2d(mat: list) -> list:
return [x for a in mat for x in a]
IS_DEVELOPMENT = None
def debug(*a) -> None:
global IS_DEVELOPMENT
if IS_DEVELOPMENT is None:
IS_DEVELOPMENT = __file__.endswith('/main.py')
if not IS_DEVELOPMENT:
return
line_no = currentframe().f_back.f_lineno
print(f"L{line_no}:", *a, file=stderr)
def inputs(type_=int, one_word=False) -> list:
in_ = input()
if one_word:
ins = list(in_)
else:
ins = in_.split()
if isinstance(type_, Iterable):
return [t(x) for t, x in zip(type_, ins)]
else:
return list(map(type_, ins))
def inputi() -> int:
return int(readline())
yn = ['no', 'yes']
Yn = ['No', 'Yes']
YN = ['NO', 'YES']
# start coding
n, k = inputs()
inputi()
tmp = inputs()
A = [0] * (n + 1)
for x in tmp:
A[x] = 1
inputi()
tmp = inputs()
B = [0] * (n + 1)
for x in tmp:
B[x] = 1
dp = [[False, False] for _ in range(n + 1)]
dp[0][1] = True
for i in range(1, n + 1):
if A[i]:
dp[i][0] = True
dp[i][1] = False
continue
elif B[i]:
dp[i][0] = False
dp[i][1] = True
continue
for t in [1, k]:
if not (0 <= i - t <= n):
continue
if A[i] == 0 and B[i] == 0:
dp[i][0] |= dp[i - t][0]
dp[i][1] |= dp[i - t][1]
print(Yn[dp[n][1]])
yassu0320