Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 179 Accepted Submission(s): 65
Problem Description
小度熊拿到了一個無序的數組,對于這個數組,小度熊想知道是否能找到一個k 的區間,裡面的 k 個數字排完序後是連續的。
現在小度熊增加題目難度,他不想知道是否有這樣的 k 的區間,而是想知道有幾個這樣的 k 的區間。
Input
輸入包含一組測試資料。
第一行包含兩個整數n,m,n代表數組中有多少個數字,m 代表針對于此數組的詢問次數,n不會超過10的4次方,m 不會超過1000。第二行包含n個正整數,第 I 個數字代表無序數組的第 I 位上的數字,數字大小不會超過2的31次方。接下來 m 行,每行一個正整數 k,含義詳見題目描述,k 的大小不會超過1000。
Output
第一行輸"Case #i:"。(由于隻有一組樣例,隻輸出”Case #1:”即可)
然後對于每個詢問的 k,輸出一行包含一個整數,代表數組中滿足條件的 k 的大小的區間的數量。
Sample Input
6 2
3 2 1 4 3 5
3
4
Sample Output
Case #1:
2
Mean:
略
analyse:
每個詢問暴力枚舉區間,字首和維護區間和,ST表維護區間最小值,然後暴力處理某一區間是否有重複的數,這樣每個詢問加起來是O(n)的。于是O(NM)就行了
Time complexity: O(n)
Source code:

View Code