You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
746 B
Java

public class SegmentTreeSimple {
public static int get(int[] t, int i) {
return t[i + t.length / 2];
}
public static void add(int[] t, int i, int value) {
i += t.length / 2;
t[i] += value;
for (; i > 1; i >>= 1)
t[i >> 1] = Math.max(t[i], t[i ^ 1]);
}
public static int max(int[] t, int a, int b) {
int res = Integer.MIN_VALUE;
for (a += t.length / 2, b += t.length / 2; a <= b; a = (a + 1) >> 1, b = (b - 1) >> 1) {
if ((a & 1) != 0)
res = Math.max(res, t[a]);
if ((b & 1) == 0)
res = Math.max(res, t[b]);
}
return res;
}
// Usage example
public static void main(String[] args) {
int n = 10;
int[] t = new int[n + n];
add(t, 0, 1);
add(t, 9, 2);
System.out.println(2 == max(t, 0, 9));
}
}