<script>
function
update(Tree, idx, s, e, pos, X)
{
if
(s == e) {
Tree[idx] += X;
}
else
{
var
m = parseInt((s + e) / 2);
if
(pos <= m) {
update(Tree, 2 * idx, s, m, pos, X);
}
else
{
update(Tree, 2 * idx + 1, m + 1, e,
pos, X);
}
Tree[idx]
= Tree[2 * idx] + Tree[2 * idx + 1];
}
}
function
sum(Tree, idx, s, e, ql, qr)
{
if
(ql == s && qr == e)
return
Tree[idx];
if
(ql > qr)
return
0;
var
m =parseInt((s + e) / 2);
return
sum(Tree, 2 * idx, s, m, ql, Math.min(m, qr))
+ sum(Tree, 2 * idx + 1, m + 1, e,
Math.max(ql, m + 1), qr);
}
function
getElement(Tree, X, N)
{
document.write(
"Element at "
+ X +
" is "
+ sum(Tree, 1, 0, N - 1, 0, X) );
}
function
range_Update(Tree, L, R, X, N)
{
update(Tree, 1, 0, N - 1, L, X);
if
(R + 1 < N)
update(Tree, 1, 0, N - 1, R + 1, -X);
}
var
N = 5;
var
Tree = Array(4 * N + 5).fill(0);
var
arr = [ 0, 0 ];
var
Q = [[ 1, 0, 1, 100 ], [ 2, 1 ]];
var
cntQuery = Q.length;
for
(
var
i = 0; i < cntQuery; i++) {
if
(Q[i][0] == 1) {
range_Update(Tree, Q[i][1],
Q[i][2], Q[i][3], N);
}
else
{
getElement(Tree, Q[i][1], N);
}
}
</script>