結果
問題 |
No.2684 折々の色
|
ユーザー |
👑 ![]() |
提出日時 | 2023-12-17 05:09:54 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,614 bytes |
コンパイル時間 | 1,296 ms |
コンパイル使用メモリ | 82,944 KB |
実行使用メモリ | 270,452 KB |
最終ジャッジ日時 | 2024-09-29 18:30:27 |
合計ジャッジ時間 | 50,250 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 48 TLE * 8 |
ソースコード
""" 10000X = 100tc + (100-t)TC 10000X = 100tc + 100TC - tTC 10000X-100TC = t(100c-TC) tが100以下なので、tを決め打てば cは決まる 枝刈でも通らない? """ 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 ) dic = [set() for i in range(101)] for cj,tj in zip(C,T): for ti in able_t: colori = [] for k in range(M): L = 10000*X[k] - 100*cj[k]*tj if L % ti != 0: break tmp = L // ti + tj*cj[k] if tmp % 100 == 0: colori.append(tmp // 100) else: break else: colori = tuple(colori) if colori in dic[ti]: print ("Yes") sys.exit() dic[tj].add(tuple(cj)) C.reverse() T.reverse() dic = [set() for i in range(101)] for cj,tj in zip(C,T): for ti in able_t: colori = [] for k in range(M): L = 10000*X[k] - 100*cj[k]*tj if L % ti != 0: break tmp = L // ti + tj*cj[k] if tmp % 100 == 0: colori.append(tmp // 100) else: break else: colori = tuple(colori) if colori in dic[ti]: print ("Yes") sys.exit() dic[tj].add(tuple(cj)) print ("No")