#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e5+5,mod=1e9+7;
int a[N],tmp[N],c[N],n,m,ans=0,cnt=0;
void merge(int a[],int l1,int r1,int l2,int r2){
int i=l1,j=l2,k=l1;
while(i<=r1&&j<=r2)
if(a[i]>a[j]){
ans=(ans+r1-i+1)%mod;
tmp[k++]=a[j++];
}
else tmp[k++]=a[i++];
while(i<=r1) tmp[k++]=a[i++];
while(j<=r2) tmp[k++]=a[j++];
for(int i=l1;i<=r2;i++)
a[i]=tmp[i];
}
void MergeSort(int a[],int l,int r){
if(l==r) return;
int m=l+r>>1;
MergeSort(a,l,m);
MergeSort(a,m+1,r);
merge(a,l,m,m+1,r);
}
signed main(){
// freopen("sample (1).in","r",stdin);
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>c[i];
c[i]-=m;
if(c[i]>0) cnt++;
a[i]=a[i-1]+c[i];
}
for(int i=1;i<=n/2;i++)
swap(a[i],a[n-i+1]);
MergeSort(a,1,n);
cout<<(ans+cnt)%mod<<endl;
return 0;
}
调了三个小时,样例都过不了。