SuitNdtie

Luxurious Hotel)

Apr 29th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include<stdio.h>
  2. int qs[100010];
  3. int n,k,p;
  4.  
  5. int max(int a,int b){
  6.     return (a > b ? a : b);
  7. }
  8.  
  9. int cal(int R,int F)
  10. {
  11.     if(R <= 0 || F == 0){
  12.         return 0;
  13.     }
  14.     int nc = cal(R-1,F);
  15.     int c;
  16.     if(R-p-1 >= 0){
  17.         c = cal(R-p,F-1) + qs[R] - qs[R-p];
  18.     }else{
  19.         c = qs[R];
  20.     }
  21.     int ans = max(nc,c);
  22.     return ans;
  23. }
  24.  
  25. int main()
  26. {
  27.     scanf("%d %d %d",&n,&k,&p);
  28.     for(int i = 1 ; i <= n ; i ++){
  29.         scanf("%d",&qs[i]);
  30.         qs[i] = qs[i] + qs[i-1];
  31.     }
  32. //  printf("%d\n",cal(n,k));
  33.     int dp[n+1][2];
  34.     for(int i = 0 ; i <= n ; i ++){
  35.         for(int j = 0 ; j <= 1 ; j ++){
  36.             dp[i][j] = 0;
  37.         }
  38.     }
  39.     for(int F = 1 ; F <= k ; F++){
  40.         for(int R = 1 ; R <= n; R ++){
  41.             int nc = dp[R-1][F%2];
  42.             int c;
  43.             if(R-p-1 >= 0){
  44.                 if(F == 1){
  45.                     c = qs[R] - qs[R-p];
  46.                 }
  47.                 else{
  48.                     c = dp[R-p][(F+1)%2] + qs[R] - qs[R-p];
  49.                 }
  50.             }else{
  51.                 c = qs[R];
  52.             }
  53.             dp[R][F%2] = max(c,nc);
  54.     //      printf("%d ",dp[R][F%2]);
  55.         }
  56.     //  printf("\n");
  57.     }
  58. //  printf("\n");
  59.     printf("%d",dp[n][k%2]);
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment