输入
1 5
4
输出
0
输入
11 45
1 4 1 9 19 8 10 8 1 2 3
输出
1
解析:
滑动窗口,注意判断m的时机。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+5;
ll n,m,a[N],sum,cnt;
ll q[N],hh=0,tt=-1;
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(int i=1;i<=n;i++){
while(sum>m&&hh<=tt) sum-=a[q[hh++]];
if(sum==m) cnt++;
sum+=a[i];
q[++tt]=i;
}
cout<<cnt;
return 0;
}