Caso # | Resultado | Tiempo | Memoria |
---|---|---|---|
#1 |
Correcto
|
0.003 s | 1 KBi |
#2 |
Incorrecto
|
0.003 s | 1 KBi |
#3 |
Incorrecto
|
0.003 s | 1 KBi |
#4 |
Correcto
|
0.003 s | 1 KBi |
#5 |
Correcto
|
0.004 s | 1 KBi |
#6 |
Incorrecto
|
0.098 s | 9 KBi |
#7 |
Incorrecto
|
0.069 s | 9 KBi |
#8 |
Correcto
|
0.097 s | 13 KBi |
#9 |
Incorrecto
|
0.08 s | 10 KBi |
#10 |
Incorrecto
|
0.096 s | 11 KBi |
/* Code by Eduardo Vega */ #include <stdio.h> #include <stdlib.h> int main () { long int casos = 0, num_edificios = 0, altura = 0, flag = 0, mayor = 0, i, j, k; long int *edificios = NULL; long int *stack = NULL; scanf("%li", &casos); for (i = 0; i < casos; i++) { scanf("%li", &num_edificios); edificios = malloc(sizeof(long int) * num_edificios); stack = malloc(sizeof(long int) * num_edificios); for (j = 0; j < num_edificios; j++) { scanf("%li", &altura); edificios[j] = altura; stack[j] = -1; if (edificios[j] > mayor) { mayor = edificios[j]; for (k = j - 1; k >= flag; k--) { if (edificios[k] < edificios[j] && stack[j] == -1) stack[k] = edificios[j]; } flag = j; } if (j > 0 && (edificios[j] > edificios[j - 1]) && edificios[j] < mayor) { for (k = j - 1; k >= flag && edificios[k] < edificios[j]; k--) { if (edificios[k] < edificios[j] && stack[j] == -1) stack[k] = edificios[j]; } } } printf("Case #%li: ", i + 1); for (j = 0; j < num_edificios; j++) printf("%li ", stack[j]); putchar('\n'); mayor = 0; flag = 0; free(stack); free(edificios); } return 0; }