#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
long long  aa[1000010];
long long  k;
struct qq
{
    long long val,zhi,zhi1;
} a1[1000100];
inline bool cmp(const qq &a,const qq &b)
{
    if(a.zhi!=b.zhi)
        return a.zhi<b.zhi;
    return a.val<b.val;
}
inline bool cmp1(const qq &a,const qq &b)
{
    return a.val<b.val;
}
long long  lowbit(long long  x)
{
    return x&-x;
}
int bb[10001000];
void update(int  x,long long  v)
{
    while(x<=k)
    {
        bb[x]+=v;
        x+=lowbit(x);
    }
}
long long sum(int   x)
{
    long long ret=0;
    while(x>0)
    {
        ret+=bb[x];
        x-=lowbit(x);
    }
    return ret;
}
int main()
{

    memset(aa,0,sizeof(aa));
    memset(bb,0,sizeof(bb));
    for(int i=0; i<1000100; i++)
    {
        a1[i].zhi=0;
        a1[i].zhi1=0;
        a1[i].val=0;
    }
    int n;
    long long  k1;
    scanf("%d%I64d",&n,&k1);
    for(int i=1; i<=n; i++)
    {
        scanf("%I64d",&aa[i]);
        aa[i]-=k1;
    }
    for(int i=1; i<=n; i++)
    {
        a1[i].zhi=a1[i-1].zhi+aa[i];
        a1[i].val=i;
    }
    k=1;
    sort(a1+1,a1+1+n,cmp);

    a1[1].zhi1=1;
    for(int i=2; i<=n; i++)
    {
        if(a1[i].zhi==a1[i-1].zhi)
            a1[i].zhi1=k;
        else
        {
            k++;
            a1[i].zhi1=k;
        }
    }
    sort(a1+1,a1+1+n,cmp1);
//    printf("%lld\n",k);
//    for(int i=1; i<=n; i++)
//    {
//        printf("%lld %lld \n",a1[i].zhi,a1[i].zhi1);
//    }
//    printf("\n");

    long long ans=0;
    for(long long  i=1; i<=n; i++)
    {
        if(a1[i].zhi>=0)
            ans++;

//        long long ii=i;
        ans+=sum(a1[i].zhi1);
//        printf("%lld\n",ans);
//        printf("%lld\n",)
        update(a1[i].zhi1,1);
    }
    printf("%I64d\n",ans);


}
