CF BUDDY
← Problems·

1690G · Count the Trains

2000 · binary search, data structures, greedy

Problem: There are nn of independent carriages on the rails. The carriages are numbered from left to right from 11 to nn. The carriages are not connected to each other. The carriages move to the left, so that the carriage with number 11 moves ahead of all of them.

The ii-th carriage has its own engine, which can accelerate the carriage to aia_i km/h, but the carriage cannot go faster than the carriage in front of it. See example for explanation.

All carriages start moving to the left at the same time, and they naturally form trains. We will call trains — consecutive moving carriages having the same speed.

For example, we have n=5n=5 carriages and array a=[10,13,5,2,6]a = [10, 13, 5, 2, 6]. Then the final speeds of the carriages will be [10,10,5,2,2][10, 10, 5, 2, 2]. Respectively, 33 of the train will be formed.

There are also messages saying that some engine has been corrupted:

  • message "k d" means that the speed of the kk-th carriage has decreased by dd (that is, there has been a change in the maximum speed of the carriage ak=akda_k = a_k - d).

Messages arrive sequentially, the processing of the next message takes into account the changes from all previous messages.

After each message determine the number of formed trains.

Input Format: The first line of input data contains a single integer tt (1t1041 \le t \le 10^4) —the number of input test cases.

This is followed by descriptions of the test cases.

The first line of each test case is empty.

The second line of the test case contains two integers nn and mm (1n,m1051 \le n,m \le 10^5) —the number of carriages and the number of messages to slow down the carriage, respectively.

The third line contains nn integers: a1,a2,,ana_1, a_2, \dots, a_n (0ai1090 \le a_i \le 10^9) — the number aia_i means that the carriage with number ii can reach a speed of aia_i km/h.

The next mm lines contain two integers kjk_j and djd_j (1kjn1 \le k_j \le n, 0djakj0 \le d_j \le a_{k_j}) —this is the message that the speed of the carriage with number kjk_j has decreased by djd_j. In other words, there has been a change in its maximum speed akj=akjdja_{k_j} = a_{k_j} - d_j. Note that at any time the speed of each carriage is non-negative. In other words, aisia_i \ge s_i, where sis_i —is the sum of such djd_j that kj=ik_j=i.

It is guaranteed that the sum of nn over all test cases does not exceed 10510^5. Similarly, it is guaranteed that the sum of mm over all test cases does not exceed 10510^5.

Output Format: Print tt lines. On each line print the answer for the corresponding test case.

For each test case print mm numbers: the number of trains formed after each message.

Note: For the first test case:

  • Initially array a=[6,2,3,7]a = [6, 2, 3, 7].
  • After the first message, the array a=[6,2,1,7]a = [6, 2, 1, 7]. Accordingly, the speeds of the carriages are [6,2,1,1][6, 2, 1, 1] and will form 33 of the train.
  • After the second message the array a=[6,2,1,0]a = [6, 2, 1, 0]. Accordingly, the speeds of the carriages are [6,2,1,0][6, 2, 1, 0], and 44 of the train will be formed.

For the second test case:

  • Initially, the array a=[10,13,5,2,6]a = [10, 13, 5, 2, 6].
  • After the first message, the array a=[10,9,5,2,6]a = [10, 9, 5, 2, 6]. Accordingly, the speeds of the carriages are equal: [10,9,5,2,2][10, 9, 5, 2, 2], and 44 of the train will be formed.
  • After the second message the array a=[10,9,5,2,4]a = [10, 9, 5, 2, 4]. Accordingly, the speeds of the carriages are [10,9,5,2,2][10, 9, 5, 2, 2], and 44 of the train will be formed.
  • After the third message the array a=[5,9,5,2,4]a = [5, 9, 5, 2, 4]. Accordingly, the speeds of the carriages are [5,5,5,2,2][5, 5, 5, 2, 2], and 22 of the train will be formed.
  • After the fourth message the array a=[5,9,3,2,4]a = [5, 9, 3, 2, 4]. Accordingly, the speeds of the carriages are [5,5,3,2,2][5, 5, 3, 2, 2], and 33 of the train will be formed.

Sample Cases

Case 1

Input

3
4 2
6 2 3 7
3 2
4 7
5 4
10 13 5 2 6
2 4
5 2
1 5
3 2
13 4
769 514 336 173 181 373 519 338 985 709 729 702 168
12 581
6 222
7 233
5 117

Output

3 4 
4 4 2 3 
5 6 6 5

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback