Untitled

 avatar
unknown
plain_text
2 years ago
1.7 kB
3
Indexable
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Solution {
	static int n, B[], max, sum, visit[];

	public static void main(String[] args) throws FileNotFoundException {
		// TODO Auto-generated method stub
		System.setIn(new FileInputStream("src/input.txt"));
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();

		for (int tc = 1; tc <= T; tc++) {
			n = sc.nextInt();
			B = new int[n];
			for (int i = 0; i < n; i++) {
				B[i] = sc.nextInt();
			}

			visit = new int[n];

			sum = 0;
			max = 0;
			shot(0);
			System.out.println("Case #" + tc);
			System.out.println(max);
		}
		sc.close();
	}

	private static void shot(int k) {
		// TODO Auto-generated method stub
		if (k == n) {
			max = sum > max ? sum : max;
			return;
		}

		for (int i = 0; i < n; i++) {
			if (visit[i] == 0) {
				visit[i] = 1;

				int tmp = sum;

				int l = getLeft(i);
				int r = getRight(i);

				if (l >= 0 && r >= 0) {
					sum += B[i - l] * B[r + i];
				}
				if (l < 0 && 0 <= r && r < n) {
					sum += B[r + i];
				} else if (r < 0 && l >= 0 && l < n) {
					sum += B[i - l];
				} else if (r < 0 && l < 0) {
					sum += B[i];
				}

				shot(k + 1);

				sum = tmp;
				visit[i] = 0;
			}
		}

	}

	private static int getRight(int s) {
		// TODO Auto-generated method stub
		for (int i = s; i < n; i++) {
			if (visit[i] == 0)
				return i - s;
		}
		return -1;
	}

	private static int getLeft(int s) {
		// TODO Auto-generated method stub
		for (int i = s; i >= 0; i--) {
			if (visit[i] == 0)
				return s - i;
		}

		return -1;
	}

}
Editor is loading...
Leave a Comment