fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <set>
  4. #include <climits>
  5. using namespace std;
  6.  
  7. int main() {
  8.  
  9. long long n,a,b;
  10. cin>>n>>a>>b;
  11.  
  12. vector<long long> V;
  13. for(long long i=0;i<n;i++)
  14. {
  15. long long x;
  16. cin>>x;
  17. V.push_back(x);
  18. }
  19. long long prefixSum[n+1];
  20. prefixSum[0]=0;
  21. for(long long i=1;i<=n;i++)
  22. {
  23. prefixSum[i] = prefixSum[i-1]+V[i-1];
  24. }
  25. multiset<long long> ms;
  26. for(long long i=a;i<=b;i++)
  27. {
  28. ms.insert(prefixSum[i]);
  29. }
  30.  
  31. long long maxSum = LLONG_MIN;
  32. for(long long i=1;i<=n-a+1;i++)
  33. {
  34. maxSum = max(maxSum,*ms.rbegin() - prefixSum[i-1]);
  35. ms.erase(ms.find(prefixSum[i+a-1]));
  36. if(i+b <= n)
  37. {
  38. ms.insert(prefixSum[i+b]);
  39. }
  40. //cout<<"maxSum="<<maxSum<<" ms.size()="<<ms.size()<<endl;
  41. }
  42.  
  43. cout<<maxSum<<endl;
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0s 5276KB
stdin
10 1 3
0 1 0 0 0 1 1 2 0 0
stdout
4