fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int main() {
  6. // your code goes here
  7. int n; cin>>n; int k ; cin>>k;
  8. vector<int>arr(n);
  9. for(int i = 0 ;i<n;i++)cin>>arr[i];
  10. vector<int>prefix(n);
  11. unordered_map<int,int>hash;
  12. int max_sum = INT_MIN;
  13. int prefix_sum = 0 ;
  14. for(int i = 1;i<n;i++){
  15. prefix_sum+=arr[i-1];
  16. if(hash.find(arr[i]-k)!=hash.end()){
  17. int sum = prefix_sum+arr[i]-hash[arr[i]-k];
  18. max_sum = max({max_sum,sum,0});
  19. }
  20. if(hash.find(arr[i]+k)!=hash.end()){
  21. int sum = prefix_sum+arr[i]-hash[arr[i]+k];
  22. max_sum = max({max_sum,sum,0});
  23. }
  24. if(hash.find(arr[i])!=hash.end()){
  25. hash[arr[i]]= min(prefix_sum,hash[arr[i]]);
  26. }
  27. else{
  28. hash[arr[i]] = prefix_sum;
  29. }
  30. }
  31.  
  32. cout<<max_sum;
  33.  
  34.  
  35. return 0;
  36. }
Success #stdin #stdout 0.01s 5288KB
stdin
8 5 
1 5 -5 8 8 8 10 15 
stdout
34