fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int t;
  6. cin>>t;
  7. while(t--)
  8. {
  9. int n,d;
  10. cin>>n>>d;
  11. int a[n];
  12. long long sum[n+1];
  13. sum[0]=0;
  14. for(int i=0;i<n;i++)
  15. cin>>a[i];
  16. int k=0,mini=INT_MAX;
  17. for(int i=0;i<n;i++)
  18. {
  19. if(a[i]>=d)
  20. {
  21. mini=1;
  22. break;
  23. }
  24. sum[i+1]=sum[i]+a[i];
  25. // cout<<sum[i+1]<<"n"<<i<<" ";
  26.  
  27. if(sum[i+1]<=0 && i!=n-1)
  28. {
  29. sum[i+1]=-INT_MAX;
  30. k=i+1;
  31. }
  32. if(sum[i+1]>=d)
  33. {
  34. int j;
  35. for(j=i-1;j>=k;j--)
  36. {
  37. if(sum[i+1]-sum[j+1]>=d)
  38. {
  39. k=j+1;
  40. // cout<<"Vals k"<<k<<" ";
  41. break;
  42. }
  43. }
  44.  
  45. // cout<<sum[i+1]<<"r"<<i<<" ";
  46. mini=min(mini,i-k+1);
  47. // cout<<"Y";
  48. }
  49. }
  50. if(mini==INT_MAX)
  51. cout<<-1<<endl;
  52. else cout<<mini<<endl;
  53. }
  54. return 0;
  55. }
Success #stdin #stdout 0s 4388KB
stdin
2
6 6
2 1 2 3 2 4
5 1
1 2 3 1 -5
stdout
2
1