제출 #1148101

#제출 시각아이디문제언어결과실행 시간메모리
1148101alejandrovCoin Collecting (JOI19_ho_t4)Java
0 / 100
91 ms14428 KiB
import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class joi2019_ho_t4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int numOfColumns = scanner.nextInt(); boolean[][] cellsOccupied = new boolean[2][numOfColumns]; for (boolean[] row : cellsOccupied) { Arrays.fill(row, false); } HashMap<String, Coordinate> coordinatesCoins = new HashMap<>(); int result = 0; for (int i = 0; i < numOfColumns * 2; i++) { int x = scanner.nextInt(); int y = scanner.nextInt(); if (x >= 1 && x <= numOfColumns && y >= 1 && y <= 2) { cellsOccupied[y - 1][x - 1] = true; } else { coordinatesCoins.put(x + " " + y, new Coordinate(x, y)); } } List<Coordinate> coordinates = new LinkedList<>(coordinatesCoins.values()); for (Coordinate coordinate : coordinates) { int minimumDistance = Integer.MAX_VALUE; int minX = 0; int minY = 0; Coordinate current = coordinate; for (int emptySlot = 0; emptySlot < numOfColumns * 2; emptySlot++) { int coordY = emptySlot % 2; int coordX = emptySlot / 2; if (cellsOccupied[coordY][coordX]) continue; int distance = current.getDistance(coordX + 1, coordY + 1); if (distance < minimumDistance) { minX = coordX; minY = coordY; minimumDistance = distance; } if (minimumDistance == 0) break; } //System.out.println(minimumDistance); result += minimumDistance; cellsOccupied[minY][minX] = true; } //System.out.println(coordinatesCoins); System.out.println(result); } static class Coordinate { int x; int y; public Coordinate(int x, int y) { this.x = x; this.y = y; } public int getDistance(int x2, int y2) { return Math.abs(x - x2) + Math.abs(y - y2); } @Override public String toString() { return x + " " + y; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...