結果
| 問題 |
No.3265 地元に帰れば天才扱い!
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-09-08 21:58:07 |
| 言語 | Crystal (1.14.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,988 bytes |
| コンパイル時間 | 15,433 ms |
| コンパイル使用メモリ | 311,536 KB |
| 実行使用メモリ | 14,020 KB |
| 最終ジャッジ日時 | 2025-09-08 21:58:27 |
| 合計ジャッジ時間 | 18,034 ms |
|
ジャッジサーバーID (参考情報) |
judge / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 4 |
| other | RE * 21 |
ソースコード
n, m = gets.not_nil!.split.map(&.to_i)
segtree0 = Array.new(2 * m, 0_i64)
segtree1 = Array.new(2 * m, 0_i64)
a = Array.new(n, 0_i64)
l_arr = Array.new(n, 0)
r_arr = Array.new(n, 0)
c_arr = Array.new(n, 0)
res = 0_i64
n.times do |i|
input = gets.not_nil!.split.map(&.to_i)
a[i] = input[0].to_i64
l_arr[i] = input[1] - 1
r_arr[i] = input[2]
segtree1[m + i] = a[i]
res += (r_arr[i] - l_arr[i]) * a[i]
c_arr[i] = i
l = m + l_arr[i]
r = m + r_arr[i]
while l < r
if l.odd?
segtree0[l] += 1
l += 1
end
if r.odd?
r -= 1
segtree0[r] += 1
end
l //= 2
r //= 2
end
end
(m - 1).downto(1) do |i|
segtree1[i] = segtree1[i << 1] + segtree1[(i << 1) | 1]
end
n.times do |i|
l = m + l_arr[i]
r = m + r_arr[i]
while l < r
if l.odd?
res -= segtree1[l]
l += 1
end
if r.odd?
r -= 1
res -= segtree1[r]
end
l //= 2
r //= 2
end
end
q = gets.not_nil!.to_i
q.times do
input = gets.not_nil!.split.map(&.to_i)
i = input[0] - 1
res -= (r_arr[i] - l_arr[i]) * a[i]
pos = m + c_arr[i]
while pos > 0
res += segtree0[pos] * a[i]
segtree1[pos] -= a[i]
pos //= 2
end
l = m + l_arr[i]
r = m + r_arr[i]
while l < r
if l.odd?
segtree0[l] -= 1
res += segtree1[l]
l += 1
end
if r.odd?
r -= 1
segtree0[r] -= 1
res += segtree1[r]
end
l //= 2
r //= 2
end
input = gets.not_nil!.split.map(&.to_i)
c_arr[i] = input[0] - 1
l_arr[i] = input[1] - 1
r_arr[i] = input[2]
res += (r_arr[i] - l_arr[i]) * a[i]
pos = m + c_arr[i]
while pos > 0
res -= segtree0[pos] * a[i]
segtree1[pos] += a[i]
pos //= 2
end
l = m + l_arr[i]
r = m + r_arr[i]
while l < r
if l.odd?
segtree0[l] += 1
res -= segtree1[l]
l += 1
end
if r.odd?
r -= 1
segtree0[r] += 1
res -= segtree1[r]
end
l //= 2
r //= 2
end
puts res
end