import java.io.*;
import java.util.StringTokenizer;
import java.util.*;
class FastIO {
public static class InputClass {
private BufferedReader reader;
private StringTokenizer tokenizer;
public InputClass(InputStream inputSteam) {
reader = new BufferedReader(new InputStreamReader(inputSteam));
tokenizer = new StringTokenizer("");
}
public boolean hasNext() {
try {
while (!tokenizer.hasMoreTokens()) {
String line = reader.readLine();
if (line == null)
return false; // EOF
tokenizer = new StringTokenizer(line);
}
} catch (Exception e) {
}
return true;
}
public String next() {
try {
return hasNext() ? tokenizer.nextToken() : null;
} catch (Exception e) {
}
return null;
}
public String nextLine() {
try {
return reader.readLine();
} catch (Exception e) {
}
return null;
}
public int nextInt() {
return Integer.parseInt(next());
}
public double nextDouble() {
return Double.parseDouble(next());
}
public long nextLong() {
return Long.parseLong(next());
}
}
public InputClass in;
public PrintWriter out;
public FastIO() {
in = new InputClass(System.in);
out = new PrintWriter(new OutputStreamWriter(System.out));
}
public FastIO(String inputFile, String outputFile) {
try {
in = inputFile == null ? new InputClass(System.in) : new InputClass(new FileInputStream(inputFile));
out = outputFile == null ? new PrintWriter(new OutputStreamWriter(System.out)) :
new PrintWriter(new OutputStreamWriter(new FileOutputStream(outputFile)));
} catch (Exception e) {
}
}
}
public class apple {
// Tested by Leetcode 307
static class SparseSegmentTreeRangeSum {
private static class TreeNode {
TreeNode left, right;
long sum;
long lazyValue;
}
private TreeNode root;
private final long L, R;
public SparseSegmentTreeRangeSum(long low, long high) {
L = low;
R = high;
root = new TreeNode();
}
private void pushdown(TreeNode root, long L, long R, long value) {
if (root != null && L != R) {
if (root.left == null) root.left = new TreeNode();
if (root.right == null) root.right = new TreeNode();
}
if (root != null && root.lazyValue > 0 && L != R) {
long M = L + ((R - L) >>> 1);
root.left.sum = (M - L + 1);
root.left.lazyValue = value;
root.right.sum = (R - (M + 1) + 1);
root.right.lazyValue = value;
root.lazyValue = 0;
}
}
public void update(long low, long high, long value) {
update(low, high, value, L, R, root);
}
private void update(long low, long high, long value, long L, long R, TreeNode root) {
if (high < L || R < low) return;
if (low <= L && R <= high) {
root.sum = (R - L + 1) * value;
root.lazyValue = value;
return;
}
pushdown(root, L, R, 1);
long M = L + ((R - L) >>> 1);
update(low, high, value, L, M, root.left);
update(low, high, value, M + 1, R, root.right);
root.sum = root.left.sum + root.right.sum;
}
// Sum[low...high] inclusive
public long getSum(long low, long high) {
return getSum(low, high, L, R, root);
}
// low, high is range of query
// L, R are range of TreeNode.
private long getSum(long low, long high, long L, long R, TreeNode root) {
if (low > high || root == null) return 0L;
if (low <= L && R <= high) {
return root.sum;
}
pushdown(root, L, R, 1);
long M = L + ((R - L) >>> 1);
if (high <= M) {
return getSum(low, high, L, M, root.left);
} else if (M + 1 <= low) {
return getSum(low, high, M + 1, R, root.right);
} else {
return getSum(low, high, L, M, root.left) + getSum(low, high, M + 1, R, root.right);
}
}
}
public static void main(String[] args) throws Exception {
FastIO io = new FastIO();
SparseSegmentTreeRangeSum tree = new SparseSegmentTreeRangeSum(1, 1_000_000_000 + 10);
int M = io.in.nextInt();
int D, X, Y, C;
C = 0;
while (M-- > 0) {
D = io.in.nextInt();
X = io.in.nextInt();
Y = io.in.nextInt();
if (D == 1) {
C = (int) tree.getSum(X + C, Y + C);
io.out.println(C);
} else {
tree.update(X + C, Y + C, 1);
}
}
io.out.flush();
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
66 ms |
8564 KB |
Output is correct |
2 |
Correct |
68 ms |
8284 KB |
Output is correct |
3 |
Correct |
73 ms |
8128 KB |
Output is correct |
4 |
Correct |
417 ms |
17260 KB |
Output is correct |
5 |
Correct |
525 ms |
18500 KB |
Output is correct |
6 |
Correct |
474 ms |
18456 KB |
Output is correct |
7 |
Correct |
538 ms |
18340 KB |
Output is correct |
8 |
Correct |
933 ms |
61272 KB |
Output is correct |
9 |
Correct |
1218 ms |
102504 KB |
Output is correct |
10 |
Correct |
1262 ms |
107312 KB |
Output is correct |
11 |
Correct |
1287 ms |
112008 KB |
Output is correct |
12 |
Correct |
1254 ms |
113312 KB |
Output is correct |
13 |
Correct |
1458 ms |
137948 KB |
Output is correct |
14 |
Correct |
1467 ms |
139596 KB |
Output is correct |
15 |
Correct |
1969 ms |
195208 KB |
Output is correct |
16 |
Correct |
1984 ms |
196004 KB |
Output is correct |
17 |
Correct |
1535 ms |
140560 KB |
Output is correct |
18 |
Correct |
1479 ms |
140784 KB |
Output is correct |
19 |
Correct |
1924 ms |
197752 KB |
Output is correct |
20 |
Correct |
1880 ms |
197808 KB |
Output is correct |