Caso # | Resultado | Tiempo | Memoria |
---|---|---|---|
#1 |
Correcto
|
0.199 s | 16 KBi |
#2 |
Correcto
|
0.185 s | 16 KBi |
#3 |
Correcto
|
0.179 s | 16 KBi |
#4 |
Correcto
|
0.274 s | 16 KBi |
#5 |
Correcto
|
0.185 s | 16 KBi |
#6 |
Correcto
|
0.181 s | 16 KBi |
#7 |
Tiempo límite excedido
|
1.194 s | 56 KBi |
#8 |
Tiempo límite excedido
|
1.007 s | 38 KBi |
#9 |
Tiempo límite excedido
|
1.039 s | 55 KBi |
#10 |
Tiempo límite excedido
|
1.29 s | 57 KBi |
#11 |
Tiempo límite excedido
|
1.174 s | 66 KBi |
#12 |
Esperando resultado...
|
||
#13 |
Tiempo límite excedido
|
1.312 s | 59 KBi |
#14 |
Tiempo límite excedido
|
1.115 s | 57 KBi |
#15 |
Esperando resultado...
|
||
#16 |
Esperando resultado...
|
||
#17 |
Esperando resultado...
|
||
#18 |
Tiempo límite excedido
|
1.089 s | 57 KBi |
#19 |
Esperando resultado...
|
||
#20 |
Tiempo límite excedido
|
1.03 s | 53 KBi |
#21 |
Tiempo límite excedido
|
1.113 s | 45 KBi |
#22 |
Esperando resultado...
|
||
#23 |
Tiempo límite excedido
|
1.013 s | 57 KBi |
#24 |
Tiempo límite excedido
|
1.056 s | 58 KBi |
#25 |
Esperando resultado...
|
||
#26 |
Tiempo límite excedido
|
1.208 s | 63 KBi |
#27 |
Esperando resultado...
|
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sn = new Scanner(System.in); int size = Integer.parseInt(sn.nextLine()); String[] arItems = sn.nextLine().split(" "); long[] array = new long[size]; for (int i = 0; i < size; i++) { int arItem = Integer.parseInt(arItems[i]); array[i] = arItem; } mergeSort(array, size); for (int i = 0; i < array.length; ++i) { System.out.print(array[i] + " "); } } private static void merge(long[] left_arr, long[] right_arr, long[] arr, int left_size, int right_size) { int i = 0, l = 0, r = 0; //The while loops check the conditions for merging while (l < left_size && r < right_size) { if (left_arr[l] < right_arr[r]) { arr[i++] = left_arr[l++]; } else { arr[i++] = right_arr[r++]; } } while (l < left_size) { arr[i++] = left_arr[l++]; } while (r < right_size) { arr[i++] = right_arr[r++]; } } public static void mergeSort(long[] arr, int len) { if (len < 2) { return; } int mid = len / 2; long[] left_arr = new long[mid]; long[] right_arr = new long[len - mid]; //Dividing array into two and copying into two separate arrays int k = 0; for (int i = 0; i < len; ++i) { if (i < mid) { left_arr[i] = arr[i]; } else { right_arr[k] = arr[i]; ++k; } } // Recursively calling the function to divide the subarrays further mergeSort(left_arr, mid); mergeSort(right_arr, len - mid); // Calling the merge method on each subdivision merge(left_arr, right_arr, arr, mid, len - mid); } }