Submission #1146911

#TimeUsernameProblemLanguageResultExecution timeMemory
1146911daniel_lopezCoin Collecting (JOI19_ho_t4)Java
0 / 100
78 ms12612 KiB
import java.util.*;

public class joi2019_ho_t4 {
    static class Pair {
        int x, y;
        
        Pair(int x, int y) {
            this.x = x;
            this.y = y;
        }
        
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof Pair)) return false;
            Pair pair = (Pair) o;
            return x == pair.x && y == pair.y;
        }
        
        @Override
        public int hashCode() {
            return Objects.hash(x, y);
        }
    }
    
    static int[] dx = {-1, 0, 1, 0};
    static int[] dy = {0, 1, 0, -1};
    static Map<String, Integer> memo;
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        
        List<Pair> initialCoins = new ArrayList<>();
        for (int i = 0; i < 2 * N; i++) {
            int x = sc.nextInt();
            int y = sc.nextInt();
            initialCoins.add(new Pair(x, y));
        }

        List<Pair> targetPositions = new ArrayList<>();
        for (int i = 1; i <= N; i++) {
            targetPositions.add(new Pair(i, 1));
            targetPositions.add(new Pair(i, 2));
        }

        initialCoins.sort((a, b) -> a.x == b.x ? a.y - b.y : a.x - b.x);
        targetPositions.sort((a, b) -> a.x == b.x ? a.y - b.y : a.x - b.x);
        
        int result = calculateMinMoves(initialCoins, targetPositions);
        System.out.println(result);
        sc.close();
    }
    
    static int calculateMinMoves(List<Pair> coins, List<Pair> targets) {
        int totalMoves = 0;
        for (int i = 0; i < coins.size(); i++) {
            totalMoves += Math.abs(coins.get(i).x - targets.get(i).x) + Math.abs(coins.get(i).y - targets.get(i).y);
        }
        return totalMoves;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...