is doing a contest. He comes across the following problem:
You have an array of
Each operation is one of the following:
C x v
Change the -th element of the array to .S l r
Output the sum of all the elements from the -th to the -th index, inclusive.Q v
Output how many elements are less than or equal to in the array.
At any time, every element in the array is between
knows that one fast solution uses a Binary Indexed Tree. He practices that data structure every day, but still somehow manages to get it wrong. Will you show him a working example?
Input Specification
The first line has
The second line has
The next
Output Specification
For each S
or Q
operation, output the answer on its own line. Note that you may need to use 64-bit integers to store the answer.
Sample Input
Copy
10 10
4 8 4 5 6 3 2 2 8 1
C 7 6
Q 7
S 2 3
S 1 4
C 4 9
S 2 3
Q 6
C 3 9
S 6 7
Q 6
Sample Output
Copy
8
12
21
12
7
9
6
Comments
Someone should have told me that the largest element in the array is at most 100000, would have saved a lot of time implementing an order statistic tree.
It says in the problem statement.
Can someone take a look at my code, I am wrong answering on the first three cases and I don't know what the problem is.
Change
while(value <= N)
towhile(value <= maxvalue)
.Makes sense, thank you.
Is this talking about the test cases themselves or something that needs to be factored in the solution?
TLE
I know my solution is
, but it still seems I am TLEing. Could someone please tell me why this is happening? Thank you!
Edit: Turns out upper_bound and lower_bound are slow.
I'm just wondering, is my algorithm for solving the question wrong? I'm TLEing on 3 test cases, but I can't seem to figure out what's causing the problem.
It also happen to me
get rid of your exception checking cases.
I changed the exceptions to if and else statements, but it didn't change much.
EDIT: calculating values beforehand is always a good idea...
I submit the exact same code, but only one TLE's on cases...
Flushing output is not guaranteed to be a constant time on every judge.
I'm not sure what you mean? Does that mean my code is technically correct time-wise or?
Flushing means using
kobortor u snake going to level 3 on the same day i went to lvl 2 ;(
And the same day you went to lvl 2 awaykened and jeffreyxiao went to lvl 4.
and the day before FatalEagle went to lvl5 ;(
To be honest FatalEagle is just straight up OP.