結果
| 問題 |
No.2684 折々の色
|
| コンテスト | |
| ユーザー |
👑 SPD_9X2
|
| 提出日時 | 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")
SPD_9X2