fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long int
  4. #define pb emplace_back
  5.  
  6.  
  7.  
  8. int minOperations(vector<int>& nums, int x) {
  9. int ans=-1;
  10. int l=0, r=0, currSum=0;
  11. int n=nums.size();
  12. int total=accumulate(nums.begin(), nums.end(), 0);
  13. if(total<x){
  14. return -1;
  15. }
  16. while(r<n){
  17. if(currSum>(total-x)){
  18. while(currSum>(total-x)){
  19. currSum-=nums[l];
  20. l++;
  21. }
  22. }
  23.  
  24. if(currSum==(total-x)){
  25. ans=(ans==-1?(r-l):max(ans, (r-l)));
  26. currSum-=nums[l];
  27. l++;
  28. }
  29.  
  30. currSum+=nums[r];
  31. r++;
  32. }
  33.  
  34. while(currSum>(total-x)){
  35. currSum-=nums[l];
  36. l++;
  37. }
  38.  
  39. if(currSum==(total-x)){
  40. ans=(ans==-1?(r-l):max(ans, (r-l)));
  41. }
  42.  
  43. return (ans==-1?-1:(n-ans));
  44. }
  45.  
  46.  
  47. signed main()
  48. {
  49.  
  50. int n,i,money;
  51. cin>>n;
  52. vector<int>a(n,0),v;
  53.  
  54. for(i=0;i<n;i++)
  55. cin>>a[i];
  56.  
  57. cin>>money;
  58.  
  59. cout<<minOperations(a, money)<<endl;
  60.  
  61. }
Success #stdin #stdout 0s 5344KB
stdin
5
1 1 4 2 3
5
stdout
2