結果
問題 |
No.2330 Eat Slime
|
ユーザー |
![]() |
提出日時 | 2025-03-20 20:29:18 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,057 bytes |
コンパイル時間 | 152 ms |
コンパイル使用メモリ | 82,644 KB |
実行使用メモリ | 157,792 KB |
最終ジャッジ日時 | 2025-03-20 20:30:11 |
合計ジャッジ時間 | 6,610 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 5 TLE * 1 -- * 24 |
ソースコード
import bisect def main(): import sys input = sys.stdin.read data = input().split() idx = 0 N = int(data[idx]); idx +=1 M = int(data[idx]); idx +=1 X = int(data[idx]); idx +=1 C = list(map(int, data[idx:idx+N])) idx +=N positions = [[] for _ in range(6)] # 1-5 for i in range(1, N+1): c = C[i-1] positions[c].append(i) sum_Y = [0]*(N+2) # Y_sum[k] for k from 0 to N for _ in range(M): A_j = int(data[idx]); idx +=1 B_j = int(data[idx]); idx +=1 Yj = int(data[idx]); idx +=1 if B_j <1 or B_j>5: continue lst = positions[B_j] a = A_j # find the first index i >= a pos = bisect.bisect_left(lst, a) for i in lst[pos:]: k = i - a if k <= N: sum_Y[k] += Yj max_total = 0 for k in range(0, N+1): current = X * k + sum_Y[k] if current > max_total: max_total = current print(max_total) if __name__ == "__main__": main()