MAGCARI

Lux Hotel

Feb 4th, 2023 (edited)
715
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. /*
  2.     Task    : _example
  3.     Author  : Phumipat C. [MAGCARI]
  4.     Language: C++
  5.     Created : 06 February 2023 [20:35]
  6. */
  7. #include<bits/stdc++.h>
  8. using namespace std;
  9. int qs[100010],dp[100010][2];
  10. int findAns(int n,int k,int p){
  11.     if(n == 0)          return 0;
  12.     if(k == 0)          return 0;
  13.     if(dp[n][k] != 0)   return dp[n][k];
  14.     return dp[n][k] = max(findAns(n-1,k,p),qs[n]-qs[max(0,n-p)] + findAns(max(0,n-p),k-1,p));
  15. }
  16. int main(){
  17.     cin.tie(0)->sync_with_stdio(0);
  18.     cin.exceptions(cin.failbit);
  19.     // a[i] + a[i-1] + a[i-2] + ... + a[i-p+1] + เหลือ i-p ห้องกับ j-1 ครอบครัว
  20.     int n,k,p;
  21.     cin >> n >> k >> p;
  22.     for(int i=1;i<=n;i++)
  23.         cin >> qs[i],qs[i]+=qs[i-1];
  24.     // cout << findAns(n,k,p) << '\n';
  25.     int ans = 0;
  26.     for(int j=1;j<=k;j++){
  27.         for(int i=1;i<=n;i++){
  28.             dp[i][j%2] = max(dp[i-1][j%2],qs[i]-qs[max(0,i-p)] + dp[max(0,i-p)][(j-1)%2]);
  29.             ans = max(ans,dp[i][j%2]);
  30.         }
  31.     }
  32.     cout << ans << '\n';
  33.     return 0;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment