█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 4643

Problema 0xde - Ordenar un arreglo grande

  • Autor: 7yrionLannister
  • Fecha: 2021-08-05 21:50:29 UTC (Hace más de 2 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.17 s 26 KBi
#2
Correcto
0.163 s 14 KBi
#3
Correcto
0.202 s 18 KBi
#4
Correcto
0.194 s 14 KBi
#5
Correcto
0.182 s 23 KBi
#6
Correcto
0.163 s 16 KBi
#7
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.96 s 125 KBi
#8
Tiempo límite excedido
1.008 s 92 KBi
#9
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.818 s 125 KBi
#10
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.812 s 125 KBi
#11
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.822 s 125 KBi
#12
Tiempo límite excedido
1.023 s 125 KBi
#13
Tiempo límite excedido
1.031 s 125 KBi
#14
Tiempo límite excedido
1.03 s 125 KBi
#15
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.927 s 125 KBi
#16
Tiempo límite excedido
1.023 s 125 KBi
#17
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.947 s 125 KBi
#18
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.86 s 125 KBi
#19
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.796 s 125 KBi
#20
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.857 s 125 KBi
#21
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.887 s 125 KBi
#22
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.955 s 125 KBi
#23
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.826 s 125 KBi
#24
Tiempo límite excedido
1.017 s 125 KBi
#25
Tiempo límite excedido
1.017 s 111 KBi
#26
Tiempo límite excedido
1.024 s 125 KBi
#27
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.97 s 125 KBi
Puntos totales: 23 / 100

Código

//import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
//import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
        // BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Scanner br = new Scanner(System.in);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        // int N = Integer.parseInt(br.readLine());
        int N = br.nextInt();
        int[] nums = new int[N];
        // String[] numsS = br.readLine().split(" ");
        for (int i = 0; i < N; i++) {
            // nums[i] = Integer.parseInt(numsS[i]);
            nums[i] = br.nextInt();
        }
        mergeSort(nums);
        String array = "";
        for (int i = 0; i < N; i++) {
            array += " " + nums[i];
        }
        bw.write(array.trim() + "\n");
        bw.close();
        br.close();
    }

    public static void mergeSort(int[] array) {
        mergeSort(array, 0, array.length - 1);
    }

    public static void mergeSort(int[] array, int startIndex, int endIndex) {
        if (startIndex < endIndex) {
            int middleIndex = (startIndex + endIndex) / 2;
            if (startIndex < middleIndex) {
                mergeSort(array, startIndex, middleIndex);
            }
            if (middleIndex + 1 < endIndex) {
                mergeSort(array, middleIndex + 1, endIndex);
            }
            mergeSorted(array, startIndex, middleIndex, endIndex);
        }
    }

    public static void mergeSorted(int[] array, int startIndex1, int endIndex1, int endIndex2) {
        int[] tempArray = array.clone();
        int startIndex2 = endIndex1 + 1;
        int iterator1 = startIndex1;
        int iterator2 = startIndex2;
        for (int i = startIndex1; i <= endIndex2; i++) {
            int item = Integer.MAX_VALUE;
            if (iterator1 <= endIndex1) { // no ha llegado al final de la primera mitad
                item = tempArray[iterator1];
            }
            if (iterator2 <= endIndex2 && tempArray[iterator2] < item) { // no ha llegado al final de la primera mitad y
                                                                         // hay
                // un item menor ahi
                item = tempArray[iterator2];
                iterator2++;
            } else {
                iterator1++;
            }
            array[i] = item;
        }
    }
}