Submission #1148116

#TimeUsernameProblemLanguageResultExecution timeMemory
1148116lucianaftCoin Collecting (JOI19_ho_t4)Java
0 / 100
79 ms13124 KiB
import java.util.Scanner; public class joi2019_ho_t4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int numberOfRows = scanner.nextInt(); long[][] coinCoordinates = new long[2 * numberOfRows][2]; for (int index = 0; index < 2 * numberOfRows; index++) { coinCoordinates[index][0] = scanner.nextLong(); coinCoordinates[index][1] = scanner.nextLong(); } System.out.println(calculateMinimumMoves(numberOfRows, coinCoordinates)); scanner.close(); } public static long calculateMinimumMoves(int numberOfRows, long[][] coinCoordinates) { Position[] coinPositions = new Position[2 * numberOfRows]; Position[] targetPositions = new Position[2 * numberOfRows]; for (int index = 0; index < 2 * numberOfRows; index++) { coinPositions[index] = new Position(coinCoordinates[index][0], coinCoordinates[index][1]); } int targetIndex = 0; for (int row = 1; row <= numberOfRows; row++) { targetPositions[targetIndex++] = new Position(row, 1); targetPositions[targetIndex++] = new Position(row, 2); } boolean[] isTargetUsed = new boolean[2 * numberOfRows]; long totalDistance = 0; for (int coinIndex = 0; coinIndex < 2 * numberOfRows; coinIndex++) { long minimumDistance = Long.MAX_VALUE; int optimalTargetIndex = -1; for (int targetIndexInner = 0; targetIndexInner < 2 * numberOfRows; targetIndexInner++) { if (!isTargetUsed[targetIndexInner]) { long currentDistance = calculateManhattanDistance(coinPositions[coinIndex], targetPositions[targetIndexInner]); if (currentDistance < minimumDistance) { minimumDistance = currentDistance; optimalTargetIndex = targetIndexInner; } } } isTargetUsed[optimalTargetIndex] = true; totalDistance += minimumDistance; } return totalDistance; } public static long calculateManhattanDistance(Position from, Position to) { return Math.abs(from.x - to.x) + Math.abs(from.y - to.y); } static class Position { long x; long y; Position(long x, long y) { this.x = x; this.y = y; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...