Untitled

 avatar
unknown
plain_text
a year ago
2.5 kB
10
Indexable
import java.io.*;
import java.util.*;

public class Solution {
    public static int N, res;
    public static int[] arr, visited;
    
    public static int countScore(int x) {
        int leftScore = 0;
        int rightScore = 0;
        for (int i = x - 1; i >= 0; i--) {
            if (visited[i] == 0) {
                leftScore = arr[i];
                break;
            }
        }
        
        for (int i = x + 1; i < N; i++) {
            if (visited[i] == 0) {
                rightScore = arr[i];
                break;
            }
        }
        
        if (leftScore != 0 && rightScore != 0) {
            return leftScore*rightScore;
        }
        else if (leftScore == 0 && rightScore != 0) {
            return rightScore;
        }
        else if (leftScore != 0 && rightScore != 0) {
            return leftScore;
        }
        else {
            return arr[x];
        }
    }
    
    public static void backtrack(int step, int score) {
        
        if(step == N - 2) {
            int[] maintainBalls = new int[2];
            int numOfMaintainBalls = 0;
            for (int i = 0; i < N; i++) {
                if (visited[i] == 0) {
                    maintainBalls[numOfMaintainBalls] = arr[i];
                    numOfMaintainBalls++;
                }
            }
            
            score += Math.max(maintainBalls[0], maintainBalls[1])*2;
            if (res < score) {
                res = score;
            }
            score -= Math.max(maintainBalls[0], maintainBalls[1])*2;
            return;
        }
        
        for (int i = 0; i < N; i++) {
            if (visited[i] == 0) {
                visited[i] = 1;
                backtrack(step+1, score+countScore(i));
                visited[i] = 0;
            }
        }
    }


    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        arr = new int[N];
        visited = new int[N];
        res = 0;
        for (int i = 0; i < N; i++) {
            arr[i] = sc.nextInt();
        }
        
        if (N == 1) {
            res = arr[0];
        }
        else {
            backtrack(0, 0);
        }
        System.out.println(res);
        sc.close();
    }
}
Editor is loading...
Leave a Comment