题目描述
给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。
输入输出格式
输入格式:
第一行为两个正整数n和b,第二行为1~n的排列。
【数据规模】
对于30%的数据中,满足n≤100;
对于60%的数据中,满足n≤1000;
对于100%的数据中,满足n≤100000,1≤b≤n。
输出格式:
输出一个整数,即中位数为b的连续子序列个数。
输入输出样例
输入样例#1:
7 4
5 7 2 4 3 1 6
输出样例#1:
4
题解:一道思路题。我一开始的思路是利用前缀和,维护两个前缀和数组,maxx[i]和minn[i],分别表示1到i这个点之间一共有多少比b大的数和多少比b小的数。那i~j之间比b大的数就可以用 maxx[j]−maxx[i−1] 得到。最后枚举区间,复杂度是 O(n/4) 。这样只能过8个点