https://www.acmicpc.net/problem/16198
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class Main {
static int max = Integer.MIN_VALUE;
static int n;
public void backtracking(ArrayList<Integer> weights, int total) {
if(weights.size() <= 2) {
max = Math.max(max, total);
return;
}
for(int i = 1; i < weights.size() - 1; i++) {
int weight = weights.get(i);
int energy = weights.get(i - 1) * weights.get(i + 1);
weights.remove(i);
backtracking(weights, total + energy);
weights.add(i, weight);
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
ArrayList<Integer> weights = new ArrayList<>();
String[] input = br.readLine().split(" ");
br.close();
for(int i = 0; i < n; i++) {
weights.add(Integer.parseInt(input[i]));
}
Main m = new Main();
m.backtracking(weights, 0);
bw.write(max + "\n");
bw.flush();
bw.close();
}
}
public void backtracking(ArrayList<Integer> weights, int total) {
if(weights.size() <= 2) {
max = Math.max(max, total);
return;
}
for(int i = 1; i < weights.size() - 1; i++) {
int weight = weights.get(i);
int energy = weights.get(i - 1) * weights.get(i + 1);
weights.remove(i);
backtracking(weights, total + energy);
weights.add(i, weight);
}
}