結果
| 問題 |
No.1091 Range Xor Query
|
| ユーザー |
|
| 提出日時 | 2021-11-05 13:27:50 |
| 言語 | Ruby (3.4.1) |
| 結果 |
TLE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 700 bytes |
| コンパイル時間 | 234 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 35,848 KB |
| 最終ジャッジ日時 | 2024-11-06 03:17:14 |
| 合計ジャッジ時間 | 36,581 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 23 TLE * 4 |
コンパイルメッセージ
Syntax OK
ソースコード
class SegmentTree
def initialize(v)
@n = 1
while @n < v.length do
@n *= 2
end
@node = Array.new(2*@n-1, 0)
v.each_with_index{|x, i|
@node[i+@n-1] = x
}
(@n-2).downto(0) {|i|
@node[i] = @node[2*i+1] ^ @node[2*i+2]
}
end
def query(a, b, k=0, l=0, r=@n)
if r <= a or b <= l then
return 0
end
if a <= l and r <= b then
return @node[k]
else
vl = query(a, b, k * 2 + 1, l, (l + r) / 2)
vr = query(a, b, k * 2 + 2, (l + r) / 2, r)
return vl ^ vr
end
end
end
N, Q = gets.split(" ").map{|s| s.to_i}
a = gets.split(" ").map{|s| s.to_i}
q = []
Q.times {
q << gets.split(" ").map(&:to_i)
}
st = SegmentTree.new(a)
q.each {|l, r|
puts st.query(l-1, r)
}