Submission #1148144

#TimeUsernameProblemLanguageResultExecution timeMemory
1148144ruben_ipenzaCoin Collecting (JOI19_ho_t4)Java
0 / 100
72 ms12644 KiB
import java.util.*;

public class joi2019_ho_t4 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();  // Leer N
        int[] x = new int[2 * N];
        int[] y = new int[2 * N];

        // Leer las posiciones de las 2N monedas
        for (int i = 0; i < 2 * N; i++) {
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }

        // Las posiciones objetivo de las monedas están en las filas 1 a N y columnas 1 y 2
        int[] targetX = new int[N];
        int[] targetY = new int[2];

        // Establecemos las posiciones de destino
        for (int i = 0; i < N; i++) {
            targetX[i] = i + 1;  // Las posiciones en X son 1..N
        }
        targetY[0] = 1;  // Primera columna
        targetY[1] = 2;  // Segunda columna

        // Ordenamos las coordenadas de las monedas en X y Y
        Arrays.sort(x);
        Arrays.sort(y);

        // Crear una lista de todas las posiciones objetivo de las monedas
        List<int[]> targets = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            targets.add(new int[]{i + 1, 1});
            targets.add(new int[]{i + 1, 2});
        }

        // Calcular el número mínimo de movimientos
        int totalMoves = 0;
        int targetIndex = 0;

        // Emparejar las monedas con las posiciones objetivo
        for (int i = 0; i < 2 * N; i++) {
            int[] target = targets.get(targetIndex++);
            totalMoves += Math.abs(x[i] - target[0]) + Math.abs(y[i] - target[1]);
        }

        // Imprimir el resultado
        System.out.println(totalMoves);

        sc.close();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...