fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. int main() {
  8. // your code goes here
  9. int n,k;
  10. cin>>n>>k;
  11. vector<int> a(n);
  12. for(int i=0;i<n;i++){
  13. cin>>a[i];
  14. }
  15.  
  16. int p=0;
  17.  
  18.  
  19. unordered_map<int,int> mpp;
  20. int ans = INT_MIN;
  21.  
  22. for(int j=0;j<n;j++){
  23.  
  24. int sum1=INT_MIN;
  25. int sum2=INT_MIN;
  26. int prev=p;
  27.  
  28. p=p+a[j];
  29.  
  30.  
  31. if(mpp.find(a[j]-k)!=mpp.end()){
  32. sum1 = p - mpp[a[j]-k];
  33. }
  34. if(mpp.find(a[j]+k)!=mpp.end()){
  35. sum2 = p -mpp[a[j]+k];
  36. }
  37. ans = max(ans,max(sum1,sum2));
  38.  
  39. if(mpp.find(a[j])!=mpp.end()){
  40. mpp[a[j]]=min(mpp[a[j]],prev);
  41. }
  42. else{
  43. mpp[a[j]]=prev;
  44. }
  45. }
  46. if(ans==INT_MIN){
  47. cout<<"Not possible";
  48. }
  49. else{
  50. cout<<ans<<endl;
  51. }
  52.  
  53.  
  54.  
  55. return 0;
  56. }
Success #stdin #stdout 0s 5328KB
stdin
4 20
10 20 30 40
stdout
90