結果
| 問題 |
No.1544 [Cherry 2nd Tune C] Synchroscope
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-20 20:30:12 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 347 ms / 2,000 ms |
| コード長 | 1,461 bytes |
| コンパイル時間 | 167 ms |
| コンパイル使用メモリ | 82,472 KB |
| 実行使用メモリ | 80,920 KB |
| 最終ジャッジ日時 | 2025-03-20 20:30:48 |
| 合計ジャッジ時間 | 5,616 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 48 |
ソースコード
import sys
import math
from collections import defaultdict
def main():
N, M = map(int, sys.stdin.readline().split())
A = list(map(int, sys.stdin.readline().split()))
B = list(map(int, sys.stdin.readline().split()))
value_map = defaultdict(lambda: {'A': [], 'B': []})
for idx, num in enumerate(A, 1):
value_map[num]['A'].append(idx)
for idx, num in enumerate(B, 1):
value_map[num]['B'].append(idx)
min_i = float('inf')
for num in value_map:
alist = value_map[num]['A']
blist = value_map[num]['B']
if not alist or not blist:
continue
for a in alist:
for b in blist:
a1 = a - 1
a2 = b - 1
n = N
m = M
d = math.gcd(n, m)
if (a1 - a2) % d != 0:
continue
lcm = (n * m) // d
m_new = m // d
n_new = n // d
t = (a2 - a1) // d
try:
inv_n = pow(n_new, -1, m_new)
except:
continue
k0 = (t * inv_n) % m_new
x0 = a1 + k0 * n
x_min = x0 % lcm
i_candidate = x_min + 1
if i_candidate < min_i:
min_i = i_candidate
print(min_i if min_i != float('inf') else -1)
if __name__ == '__main__':
main()
lam6er