// 2019 IUSB Programming Competition // Round 2 Problem 3 // Find the optimal score for the blocks game // Solution by Liguo Yu import java.util.ArrayList; import java.util.Scanner; public class round2_p3 { public static void main(String[] main) { Scanner scan = new Scanner(System.in); int length = scan.nextInt(); ArrayList blocks = new ArrayList<>(); for (int i = 0; i < length; i++) { blocks.add(scan.nextInt()); } int score = calculate(blocks); System.out.println(score); } static int calculate(ArrayList blocks) { int highest = 0; int i = 0; while(i new_blocks = new ArrayList<>(); for (int ii = 0; ii < start; ii++) { new_blocks.add(blocks.get(ii)); } for (int ii = end; ii < blocks.size(); ii++) { new_blocks.add(blocks.get(ii)); } int result; if(new_blocks.size()==0) return result = (end-start)*(end-start); else result = (end-start)*(end-start) + calculate(new_blocks); if(result > highest) highest = result; } return highest; } }