結果
問題 |
No.255 Splarrraaay スプラーレェーーイ
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:04:13 |
言語 | PyPy3 (7.3.15) |
結果 |
MLE
|
実行時間 | - |
コード長 | 2,341 bytes |
コンパイル時間 | 138 ms |
コンパイル使用メモリ | 82,212 KB |
実行使用メモリ | 300,396 KB |
最終ジャッジ日時 | 2025-06-12 20:10:04 |
合計ジャッジ時間 | 23,071 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | MLE * 1 -- * 9 |
ソースコード
import bisect MOD = 10**18 + 9 def main(): import sys input = sys.stdin.read data = input().split() ptr = 0 N = int(data[ptr]) ptr += 1 Q = int(data[ptr]) ptr += 1 intervals = [ (0, N-1, None, 0) ] bonus = [0] * 5 for _ in range(Q): x = int(data[ptr]) ptr += 1 l = int(data[ptr]) ptr += 1 r = int(data[ptr]) ptr += 1 if x == 0: max_sum = -1 max_teams = [] sums = [0] * 5 for s, e, c, t in intervals: if e < l or s > r: continue os = max(s, l) oe = min(e, r) ol = oe - os + 1 if c is None: continue sums[c] += ol * t for i in range(5): if sums[i] > max_sum: max_sum = sums[i] max_teams = [i] elif sums[i] == max_sum and sums[i] != -1: max_teams.append(i) if len(max_teams) == 1: bonus[max_teams[0]] += max_sum else: X = x - 1 new_intervals = [] i = 0 while i < len(intervals): s, e, c, t = intervals[i] if e < l: new_intervals.append((s, e, c, t)) i += 1 continue if s > r: new_intervals.append((s, e, c, t)) i += 1 continue if s < l: new_intervals.append((s, l-1, c, t)) new_s = max(s, l) new_e = min(e, r) if c == X: new_t = t + 1 else: new_t = 1 new_c = X new_intervals.append((new_s, new_e, new_c, new_t)) if e > r: new_intervals.append((r+1, e, c, t)) i += 1 intervals = new_intervals scores = [0] * 5 for s, e, c, t in intervals: if c is not None: scores[c] += (e - s + 1) * t for i in range(5): scores[i] = (scores[i] + bonus[i]) % MOD print(' '.join(map(str, scores))) if __name__ == '__main__': main()