結果
| 問題 |
No.255 Splarrraaay スプラーレェーーイ
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 14:53:30 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 2,341 bytes |
| コンパイル時間 | 471 ms |
| コンパイル使用メモリ | 82,612 KB |
| 実行使用メモリ | 301,396 KB |
| 最終ジャッジ日時 | 2025-06-12 14:56:39 |
| 合計ジャッジ時間 | 23,732 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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()
gew1fw