抽象三指针做法可以过喵 (30pts,感觉算法是对的)
#include<bits/stdc++.h>
#define ll long long
#define debug printf("ciallo\n")
#define rep(i,aaa,bbb) for(int i=(aaa);i<=(bbb);i++)
#define per(i,aaa,bbb) for(int i=(aaa);i>=(bbb);i--)
#define pb push_back
using namespace std;
int read(){
int f=1,x=0;
char c=getchar();
while(c>'9'||c<'0'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return x*f;
}
const int inf=0x7fffffff;
const int maxn=1e5+10;
int n,lm,rm;
int add[maxn];//i---j==a[j]-a[i-1]
//to i,j add[i]-rm=<add[j]<=add[i]-lm i=[1,n],j=[0,n-1]
//记录区间和addj,排序,三指针
int bl[maxn];
int aj[maxn];
int ans;
int main(){
n=read(),lm=read(),rm=read();
rep(i,1,n)add[i]=read()+add[i-1];
rep(i,1,n)bl[i]=add[i];
rep(i,1,n)aj[i]=add[i-1];
sort(bl+1,bl+1+n);
sort(aj+1,aj+1+n);
int l=1,r=1;
rep(k,1,n){
while(r<=n&&aj[k]>=bl[r]-rm)r++;
while(l<=n&&aj[k]>bl[l]-lm)l++;
ans+=(r-l);
}
printf("%d",ans);
return 0;
}