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. vector<int> prefix(n+1,0);
  17. for(int i=1;i<=n;i++){
  18. prefix[i]=prefix[i-1]+a[i-1];
  19.  
  20. }
  21.  
  22. unordered_map<int,int> mpp;
  23. int ans = INT_MIN;
  24.  
  25. for(int j=0;j<n;j++){
  26.  
  27. int sum1=INT_MIN;
  28. int sum2=INT_MIN;
  29.  
  30.  
  31. if(mpp.find(a[j]-k)!=mpp.end()){
  32. sum1 = prefix[j+1] - mpp[a[j]-k];
  33. }
  34. if(mpp.find(a[j]+k)!=mpp.end()){
  35. sum2 = prefix[j+1] -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]],prefix[j]);
  41. }
  42. else{
  43. mpp[a[j]]=prefix[j];
  44. }
  45. }
  46.  
  47.  
  48. if(ans==INT_MIN){
  49. cout<<"Not possible";
  50. }
  51. else{
  52. cout<<ans<<endl;
  53. }
  54.  
  55.  
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0s 5320KB
stdin
4 20
10 20 30 40
stdout
90