Submission #1147971

#TimeUsernameProblemLanguageResultExecution timeMemory
1147971shaiel_vargasCoin Collecting (JOI19_ho_t4)Java
Compilation error
0 ms0 KiB
import java.util.*; public class Main { static class Coin { int x, y; public Coin(int x, int y) { this.x = x; this.y = y; } public int manhattanDistance(Coin other) { return Math.abs(this.x - other.x) + Math.abs(this.y - other.y); } } public static int solve(int N, List<Coin> coins) { List<Coin> targets = new ArrayList<>(); for (int i = 1; i <= N; i++) { targets.add(new Coin(i, 1)); targets.add(new Coin(i, 2)); } int[][] costMatrix = new int[2 * N][2 * N]; for (int i = 0; i < 2 * N; i++) { for (int j = 0; j < 2 * N; j++) { costMatrix[i][j] = coins.get(i).manhattanDistance(targets.get(j)); } } return hungarianAlgorithm(costMatrix); } public static int hungarianAlgorithm(int[][] cost) { int n = cost.length; int[] lx = new int[n]; int[] ly = new int[n]; int[] xy = new int[n]; int[] yx = new int[n]; boolean[] S = new boolean[n]; boolean[] T = new boolean[n]; int[] slack = new int[n]; int[] slackx = new int[n]; Arrays.fill(lx, Integer.MIN_VALUE); Arrays.fill(ly, 0); Arrays.fill(xy, -1); Arrays.fill(yx, -1); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { lx[i] = Math.max(lx[i], cost[i][j]); } } for (int root = 0; root < n; root++) { Arrays.fill(S, false); Arrays.fill(T, false); Arrays.fill(slack, Integer.MAX_VALUE); int x = root; int y = -1; xy[x] = -1; yx[y] = -1; while (true) { int curX = x; int curY = -1; int minSlack = Integer.MAX_VALUE; for (int j = 0; j < n; j++) { if (!T[j]) { int diff = lx[curX] + ly[j] - cost[curX][j]; if (diff < slack[j]) { slack[j] = diff; slackx[j] = curX; } } } for (int j = 0; j < n; j++) { if (xy[curX] == -1) { break; } curY = xy[curX]; curX = slackx[curY]; } } } return -1; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); List<Coin> coins = new ArrayList<>(2 * N); for (int i = 0; i < 2 * N; i++) { int x = sc.nextInt(); int y = sc.nextInt(); coins.add(new Coin(x, y)); } int result = solve(N, coins); System.out.println(result); } }

Compilation message (stderr)

joi2019_ho_t4.java:3: error: class Main is public, should be declared in a file named Main.java
public class Main {
       ^
1 error

=======