[题目链接] 点击打开链接 [算法] 将小于m的数看作-1,大于m的看作1 然后求前缀和,如果区间[l,r]的中位数是m,显然有 : sum(r) - sum(l-1) = 0 因此,只需m的位置之前(后)统计每个前缀和出现的次数,然后通过乘法原理计算答案,即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 100010 long long i,n,m,pos,sum,opt,ans; ],r[MAXN*]; te…