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

Envío 1261

Problema 0xcf - Mirando al horizonte

  • Autor: EduardoVega
  • Fecha: 2020-10-14 03:31:15 UTC (Hace alrededor de 4 años)
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
Puntos totales: 40 / 100

Código

/* 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;
}