結果

問題 No.2254 Reverse Only
コンテスト
ユーザー detteiuu
提出日時 2026-08-24 01:02:22
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 234 ms / 2,000 ms
+ 769µs
コード長 873 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 236 ms
コンパイル使用メモリ 96,108 KB
実行使用メモリ 144,384 KB
最終ジャッジ日時 2026-08-24 01:02:37
合計ジャッジ時間 11,053 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 47
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

HMOD = 1145141919810011

N, K = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))

if A == B:
    exit(print("Yes"))
if N < K or sorted(A) != sorted(B):
    exit(print("No"))
if N == K:
    if A[::-1] == B:
        print("Yes")
    else:
        print("No")
    exit()
if K+2 <= N:
    exit(print("Yes"))

base = 10**6

def func(A, B):
    hashA = 0
    hashB = 0
    for a in A[::-1]:
        hashA = (hashA*base+a)%HMOD
    for b in B[::-1]:
        hashB = (hashB*base+b)%HMOD
    inv = pow(base, -1, HMOD)
    n = pow(base, N-1, HMOD)
    for i in range(N):
        if hashA == hashB:
            return True
        hashA -= A[i]
        hashA %= HMOD
        hashA *= inv
        hashA %= HMOD
        hashA += A[i]*n%HMOD
        hashA %= HMOD
    return False

print("Yes" if func(A, B) or func(A[::-1], B) else "No")
0