結果

問題 No.2684 折々の色
ユーザー hato336
提出日時 2024-03-20 22:44:49
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,552 ms / 2,000 ms
コード長 1,405 bytes
コンパイル時間 343 ms
コンパイル使用メモリ 81,792 KB
実行使用メモリ 165,352 KB
最終ジャッジ日時 2024-09-30 08:52:28
合計ジャッジ時間 41,712 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 56
権限があれば一括ダウンロードができます

ソースコード

diff #

import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random
#sys.setrecursionlimit(10**9)
#sys.set_int_max_str_digits(0)
n,m = map(int,input().split())
mod = 2**61-1
base = 98765
x = list(map(int,input().split()))
for i in range(m):
    x[i] *= 10000
c = [list(map(int,input().split())) for i in range(n)]
s = collections.defaultdict(int)
for i in range(n):
    z = 0
    for j in range(m):
        z += (1 * c[i][-1] * c[i][j]) * (pow(base,j,mod))
        z %= mod
    s[z] += 1

for i in range(n):
    if 100 - c[i][-1] == 0:
        cnt = 0
        for j in range(m):
            if x[j] == 100 * c[i][j] * c[i][-1]:
                cnt += 1
            else:
                break
        if cnt == m:
            print('Yes')
            exit()
        continue
    z = 0
    for j in range(m):
        z += (1 * c[i][-1] * c[i][j]) * (pow(base,j,mod))
        z %= mod
    s[z] -= 1
    y = []
    for j in range(m):
        y.append(x[j] - 100*c[i][-1]*c[i][j])
    check = 1
    for j in range(m):
        if y[j] % (100 - c[i][-1]) != 0:
            check = 0
            break
        else:
            y[j] //= (100 - c[i][-1])
    if check == 0:
        s[z] += 1
        continue
    v = 0
    for j in range(m):
        v += y[j] * pow(base,j,mod)
        v %= mod
    #print(i,y,s)
    if s[v] >= 1:
        exit(print('Yes'))
    s[z] += 1
print('No')
0