P22471 [CodeChef] SMARKET
提高
题目描述

Read problems statements in Mandarin Chinese, Russian and Vietnamese as well.

Sometimes, the stability of a stock market is at least as important as rapid price changes.

Let a stable block be a maximal consecutive block of days with same stock prices.

Moreover, let a stable block of order K be a stable block of length at least K.

For example, if stock prices for 7 consecutive days are: 20, 10, 10, 7, 7, 7, 10, then there are 4 stable blocks there: [20], [10, 10], [7, 7, 7] and [10]. Moreover, there are:

0 stable blocks of order 4 or higher
1 stable block of order 3: [7, 7, 7]
2 stable block of order 2: [10, 10], [7, 7, 7]
4 stable block of order 1: [20], [10, 10], [7, 7, 7] and [10]

Given historical prices of a stock across N days, the goal is to answer Q customers' questions.

The i-th question contains three integers L_{i}, R_{i} and K_{i}. It asks for the number of stable blocks of order K_{i}, if only the stock prices of the days in the range L_{i}, R_{i} are considered.

------ Input ------

In the first line there is a single integer T, denoting the number of test cases to handle. After that the description of T test cases follow.

The first line of each test case contains two space-separated integers N and Q, denoting respectively, the number of days for which the stock prices are given, and the number of questions to answer.

The second line contains N space-separated integers A_{1}, A_{2}, ..., A_{N}, where A_{i} denotes the price of the stock on the i-th day.

Q lines follow. In the i-th of them there are three space-separated integers L_{i}, R_{i} and K_{i} denoting the i-th query.

------ Output ------

For each test case, print answers to all queries in the test case, one per line.

------ Constraints ------

$1 ≤ T ≤ 5$
$1 ≤ N, Q ≤ 10^{5}$
$1 ≤ A_{i} ≤ 10^{6}$
$1 ≤ L_{i} ≤ R_{i} ≤ N$
$1 ≤ K_{i} ≤ R_{i} - L_{i} + 1$

------ Subtasks ------

Subtask #1: (10 points)

$1 ≤ N, Q ≤ 3000$

Subtask #2: (90 points)

$original constraints$

----- Sample Input 1 ------
2
8 5
20 10 10 10 7 7 7 10
2 6 2
3 6 2
3 6 3
3 8 3
3 8 1
3 2
27 27 27
1 3 1
2 2 1
----- Sample Output 1 ------
2
2
0
1
3
1
1
----- explanation 1 ------
There are two test cases to handle

Test case #1:
There are 8 days for which prices are given and 5 queries to handle.
The first query asks for the number of stable blocks of order 2 in range [2, 6], which corresponds to prices 10 10 10 7 7. The answer is 2 because there are two such blocks: 10 10 10 and 7 7.
The second query asks for the number of stable blocks of order 2 in range [3, 6], which corresponds to prices 10 10 7 7. The answer is 2 because there are two such blocks: 10 10 and 7 7.
The third query asks for the number of stable blocks of order 3 in range [3, 6], which corresponds to prices 10 10 7 7. The answer is 0 because there is no stable block of order 3 there (maximum order of a stable block is 2).
The fourth query asks for the number of stable blocks of order 3 in range [3, 8], which corresponds to prices 10 10 7 7 7 10. The answer is 1 because the only stable block of order 3 here is 7 7 7.
The fifth query asks for the number of stable blocks of order 1 in range [3, 8], which corresponds to prices 10 10 7 7 7 10. The answer is 3 because there are 3 stable blocks of order 1 there: 10 10, 7 7 7 and 10.

Test case #2:
There are 3 days for which prices are given and 2 queries to handle.
The first query asks for the number of stable blocks of order 1 in range [1, 3], which corresponds to prices 27 27 27. The answer is 1 because the only such block there is 27 27 27.
The second query asks for the number of stable blocks of order 1 in range [2, 2], which corresponds to a single price 27. The answer is 1 because the only such block there is 27.

输入格式

见题面

输出格式

见题面

样例输入
2 8 5 20 10 10 10 7 7 7 10 2 6 2 3 6 2 3 6 3 3 8 3 3 8 1 3 2 27 27 27 1 3 1 2 2 1
样例输出
2 2 0 1 3 1 1