Submission #1147332

#TimeUsernameProblemLanguageResultExecution timeMemory
1147332leo12345Coin Collecting (JOI19_ho_t4)Java
0 / 100
94 ms13016 KiB
import java.util.*; public class joi2019_ho_t4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int[][] coins = new int[2 * N][2]; for (int i = 0; i < 2 * N; i++) { coins[i][0] = scanner.nextInt(); coins[i][1] = scanner.nextInt(); } Arrays.sort(coins, (a, b) -> { if (a[0] != b[0]) return Integer.compare(a[0], b[0]); return Integer.compare(a[1], b[1]); }); List<int[]> targetPositions = new ArrayList<>(); for (int x = 1; x <= N; x++) { targetPositions.add(new int[]{x, 1}); targetPositions.add(new int[]{x, 2}); } targetPositions.sort((a, b) -> { if (a[0] != b[0]) return Integer.compare(a[0], b[0]); return Integer.compare(a[1], b[1]); }); long[][] dp = new long[2 * N + 1][2 * N + 1]; for (int i = 0; i <= 2 * N; i++) Arrays.fill(dp[i], Long.MAX_VALUE / 2); dp[0][0] = 0; for (int i = 1; i <= 2 * N; i++) { for (int j = 1; j <= i; j++) { int cost = Math.abs(coins[i - 1][0] - targetPositions.get(j - 1)[0]) + Math.abs(coins[i - 1][1] - targetPositions.get(j - 1)[1]); dp[i][j] = Math.min(dp[i - 1][j], dp[i - 1][j - 1] + cost); } } System.out.println(dp[2 * N][2 * N]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...