fork download
  1. #include<bits/stdc++.h>
  2. #define ll long long int
  3. #define vec vector<ll>
  4. #define f(var,a,b) for(ll var = a ; var < b ; var++ )
  5. #define fasthoja ios_base::sync_with_stdio(false); cin.tie(NULL);
  6. using namespace std;
  7.  
  8. //This funtion will find the maximum sum of ‘k’
  9. //consecutive elements in the array.
  10. ll slidingWindow( vec &v , ll k ) {
  11. // Note : here we maintain, sliding window of size k
  12.  
  13. /* Algo : 1. Calculate sum from 0 to kth element
  14. 2. Now at each step take add the next (k+1)th value, and subtract the k-1th value
  15. 3. at each step store maximum sum, and finally return it
  16. */
  17. if( k > v.size() ) {
  18. // Here window size is greater than array size hence invalid
  19. // cout << "Invalid\n";
  20. return -1;
  21. }
  22.  
  23. ll sum = 0;
  24. f(i,0,k) sum += v[i];
  25.  
  26. ll maxSum = sum;
  27. ll index = 1;
  28.  
  29. f(i,k,v.size()) {
  30. sum += ( v[i] - v[i-k] );
  31. maxSum = max( maxSum , sum );
  32. }
  33.  
  34. return maxSum;
  35. }
  36.  
  37. int main(void){
  38.  
  39. fasthoja;
  40. ll t; cin>>t;
  41.  
  42. while(t--){
  43. ll n,k; cin >> n >> k;
  44. vec v(n); f(i,0,n) cin >> v[i];
  45. cout << slidingWindow( v , k ) << "\n";
  46. }//end of test case loop
  47.  
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0s 4324KB
stdin
1
5 3
1 2 3 4 5
stdout
12