j33vansh

Game of Chefs Java Solution

May 7th, 2022 (edited)
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.13 KB | None | 0 0
  1. import java.util.*;
  2. class Main {
  3.     public static void main(String[] args) {
  4.        
  5.        
  6.         Scanner sc = new Scanner(System.in);
  7.        
  8.         int t = sc.nextInt();
  9.         while(t-->0){
  10.             int n = sc.nextInt();
  11.         int a[] = new int[n + 1];
  12.         for(int i = 1; i <= n; ++i)
  13.             a[i] = sc.nextInt();
  14.         long dp[][] = new long[n + 123][n + 123];
  15.         for(int l = n; l >= 1; --l) {
  16.             for(int r = l; r <= n; ++r) {
  17.                 if(r - l == 0) {
  18.                     dp[r][l] = a[r];
  19.                 }else if(r - l == 1){
  20.                     dp[l][r] = Math.max(a[l], a[r]);
  21.                 }else if(r - l == 2) {
  22.                     // 1 2 3
  23.                     dp[l][r] = Math.max(a[l] + Math.min(a[l + 1], a[l + 2]), a[r] + Math.min(a[r - 1], a[r - 2]));
  24.                 }else {
  25.                     // 1 2 3 4
  26.                     dp[l][r] = Math.max(a[l] + Math.min(dp[l + 2][r], dp[l + 1][r - 1]), a[r] + Math.min(dp[l][r - 2], dp[l + 1][r - 1]));
  27.                 }
  28.             }
  29.         }
  30.         System.out.println(dp[1][n]);
  31.         }
  32.         sc.close();
  33.     }
  34. }
Add Comment
Please, Sign In to add comment