G

周赛9D - 长度最小的子数组

public
Guest May 09, 2025 Never 20
Clone
C++ 周赛9D - 长度最小的子数组 36 lines (35 loc) | 546 Bytes
1
#include<bits/stdc++.h>
2
using namespace std;
3
const int N=3e5+10;
4
int a[N];
5
int T,n,l,r,ans;
6
long long s,sum;
7
int main()
8
{
9
ios::sync_with_stdio(false);
10
cin.tie(0);cout.tie(0);
11
12
cin>>T;
13
while(T--)
14
{
15
cin>>n>>s;
16
if(s==0)
17
{
18
cout<<1<<'\n';
19
continue;
20
}
21
l=1;r=0;sum=0;ans=0x3f3f3f3f;
22
for(int i=1;i<=n;i++)
23
{
24
cin>>a[i];
25
r++;sum+=a[i];
26
while(sum>=s)
27
{
28
ans=min(ans,r-l+1);
29
sum-=a[l],l++;
30
}
31
}
32
if(ans==0x3f3f3f3f) cout<<0<<'\n';
33
else cout<<ans<<'\n';
34
}
35
return 0;
36
}