pizza location
unknown
java
a year ago
1.7 kB
7
Indexable
import java.util.Scanner; public class Solution { static int k, r; static int m; static int loca[][]; static int n; static int pizza[][]; static int ans; static boolean visit[]; static int dis(int x1, int y1, int x2, int y2) { return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); } static void backTrack(int idx, int count, int sum) { if (count == k) { if (ans < sum) { ans = sum; } return; } if(idx == m + 1){ return; } backTrack(idx + 1, count + 1, sum + solve(loca[idx][0], loca[idx][1])); visit = new boolean[n+1]; backTrack(idx + 1, count, sum); } static int solve(int x, int y) { int sum = 0; int d = 0; for (int j = 1; j <= n; j++) { if(!visit[j]){ d = dis(x, y, pizza[j][0], pizza[j][1]); if (d <= r * r) { visit[j] = true; sum += pizza[j][2]; } } } return sum; } public static void main(String[] args) throws Exception { //System.setIn(new FileInputStream("C:/SCS/ADV2/src/test/input.txt")); Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for (int tc = 1; tc <= T; tc++) { k = sc.nextInt(); r = sc.nextInt(); m = sc.nextInt(); loca = new int[m + 1][2]; for (int i = 1; i <= m; i++) { loca[i][0] = sc.nextInt(); loca[i][1] = sc.nextInt(); } n = sc.nextInt(); pizza = new int[n + 1][3]; for (int i = 1; i <= n; i++) { pizza[i][0] = sc.nextInt(); pizza[i][1] = sc.nextInt(); pizza[i][2] = sc.nextInt(); } ans = 0; visit = new boolean[n + 1]; backTrack(1, 0, 0); System.out.println("#" + tc + " " + ans); } sc.close(); } }
Editor is loading...
Leave a Comment