結果
問題 | No.97 最大の値を求めるくえり |
ユーザー |
|
提出日時 | 2024-03-07 15:40:36 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 3,008 ms / 5,000 ms |
コード長 | 1,650 bytes |
コンパイル時間 | 155 ms |
コンパイル使用メモリ | 82,148 KB |
実行使用メモリ | 92,020 KB |
最終ジャッジ日時 | 2024-09-29 18:40:36 |
合計ジャッジ時間 | 12,770 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 19 |
ソースコード
import sysimport mathimport bisectfrom heapq import heapify, heappop, heappushfrom collections import deque, defaultdict, Counterfrom functools import lru_cachefrom itertools import accumulate, combinations, permutations, productsys.setrecursionlimit(1000000)MOD = 10 ** 9 + 7MOD99 = 998244353input = lambda: sys.stdin.readline().strip()NI = lambda: int(input())NMI = lambda: map(int, input().split())NLI = lambda: list(NMI())SI = lambda: input()SMI = lambda: input().split()SLI = lambda: list(SMI())EI = lambda m: [NLI() for _ in range(m)]xor128_x = 123456789xor128_y = 362436069xor128_z = 521288629xor128_w = 88675123mask = (1 << 32) - 1def xor128():global xor128_x, xor128_y, xor128_z, xor128_wt = xor128_x ^ (xor128_x << 11)t &= maskxor128_x, xor128_y, xor128_z = xor128_y, xor128_z, xor128_wxor128_w = xor128_w ^ (xor128_w >> 19) ^ (t ^ (t >> 8))xor128_w &= maskreturn xor128_wdef generateA(N):A = []for i in range(N):A.append(xor128() % 100003)return Adef main():N, Q = NMI()M = 100003A = generateA(N)cutoff = 3000if N <= 3000:for _ in range(Q):q = NI()B = [a*q % M for a in A]print(max(B))else:SA = set(A)for _ in range(Q):q = NI()if q == 0:print(0)continueinv = pow(q, M-2, M)for x in range(M-1, M-1-3000, -1):a = x * inv % Mif a in SA:print(x)breakif __name__ == "__main__":main()