結果
問題 |
No.2684 折々の色
|
ユーザー |
![]() |
提出日時 | 2023-12-17 06:30:21 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,034 ms / 2,000 ms |
コード長 | 1,618 bytes |
コンパイル時間 | 308 ms |
コンパイル使用メモリ | 82,224 KB |
実行使用メモリ | 283,344 KB |
最終ジャッジ日時 | 2024-09-29 18:30:58 |
合計ジャッジ時間 | 26,572 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 56 |
ソースコード
""" 10000X = 100tc + (100-t)TC 10000X = 100tc + 100TC - tTC 10000X-100TC = t(100c-TC) tが100以下なので、tを決め打てば cは決まる 枝刈でも通らない? → 流石に無理. C++なら行けるかも TC = (10000X-100tc) / (100-t) t = 100の時、全てのcがXならok """ import sys from sys import stdin N,M = map(int,stdin.readline().split()) X = list(map(int,stdin.readline().split())) C = [] T = [] able_t = [i+1 for i in range(100)] for i in range(N): CT = list(map(int,stdin.readline().split())) c,t = CT[:-1],CT[-1] C.append( c ) T.append( t ) ctset = set() for c,t in zip(C,T): if t == 100: if c == X: print ("Yes") sys.exit() else: CT = [] for i in range(M): L = 10000*X[i] - 100*t*c[i] if L % (100-t) != 0: break CT.append(L // (100-t)) else: if tuple(CT) in ctset: print ("Yes") sys.exit() ct = [ c[i] * t for i in range(M) ] ctset.add( tuple(ct) ) C.reverse() T.reverse() ctset = set() for c,t in zip(C,T): if t == 100: if c == X: print ("Yes") sys.exit() else: CT = [] for i in range(M): L = 10000*X[i] - 100*t*c[i] if L % (100-t) != 0: break CT.append(L // (100-t)) else: if tuple(CT) in ctset: print ("Yes") sys.exit() ct = [ c[i] * t for i in range(M) ] ctset.add( tuple(ct) ) print ("No")