Guest User

Calvins game

a guest
Feb 25th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.55 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Arrays;
  5.  
  6. import static java.lang.Integer.max;
  7.  
  8. /**
  9.  * Created by bugkiller on 07/02/18.
  10.  */
  11. class CalvinsGame {
  12.  
  13.     static int a[] = new int[1000005];
  14.     static int dp[] = new int[1000005];
  15.  
  16.     public static void main(String[] args) throws IOException {
  17.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  18.         int n, k;
  19.         String[] s;
  20.         s = br.readLine().split("\\s");
  21.         n = Integer.parseInt(s[0]);
  22.         k = Integer.parseInt(s[1]);
  23.         s = br.readLine().split("\\s");
  24.         for (int i = 1; i <= n; i++) {
  25.             a[i] = Integer.parseInt(s[i - 1]);
  26.         }
  27.         System.out.println(solve(a, n, k));
  28.     }
  29.  
  30.     private static int solve(int[] a, int n, int k) {
  31.         return maxScore(a, n, k);
  32.     }
  33.  
  34.     private static int maxScore(int[] a, int n, int k) {
  35.         if (n==1) return 0;
  36.         if (n == 2) {
  37.             if (k == 1) {
  38.                 return max(0, a[1]);
  39.             }
  40.             if (k==2)
  41.                 return a[1];
  42.         }
  43.         Arrays.fill(dp, 0);
  44.         for (int i = k + 1; i <= n; i++) {
  45.             dp[i] = max(dp[i - 1], dp[i - 2]) + a[i];
  46.         }
  47.         dp[n - 1] = max(dp[n - 1], dp[n] + a[n - 1]);
  48.         for (int i = n - 2; i > 0; i--) {
  49.             dp[i] = max(dp[i], max(dp[i + 1], dp[i + 2]) + a[i]);
  50.         }
  51.         if (k == 1) {
  52.             return max(0, dp[1]);
  53.         }
  54.         return dp[1];
  55.     }
  56. }
Add Comment
Please, Sign In to add comment