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

Envío 720

Problema 0x62 - Contar elementos mayores a X en un arreglo pequeño

  • Autor: cposada8
  • Fecha: 2020-09-14 16:44:53 UTC (Hace más de 3 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.023 s 3 KBi
#2
Correcto
0.021 s 3 KBi
#3
Correcto
0.023 s 3 KBi
#4
Correcto
0.029 s 3 KBi
#5
Correcto
0.024 s 3 KBi
#6
Correcto
0.024 s 3 KBi
#7
Correcto
0.032 s 3 KBi
#8
Correcto
0.024 s 3 KBi
#9
Correcto
0.025 s 3 KBi
#10
Correcto
0.025 s 3 KBi
Puntos totales: 100 / 100

Código

from bisect import bisect
N = int(input())
arreglo = [int(x) for x in input().split()]
c = int(input())
qs = []
for i in range(c):
    qs.append(int(input()))


def contar_mayores_x(arreglo, qs):
    arreglo.sort()
    reversed_arreglo = sorted(arreglo, reverse=True)
    
    respuestas = []
    for q in qs:
        # casos base: si el elemento es <min o elem > max:
        if q<min(arreglo):
            respuestas.append(len(arreglo))
            continue
        if q>=max(arreglo):
            respuestas.append(0)
            continue

        index_primer_menor = bisect(arreglo, q)-1

        primer_menor = arreglo[index_primer_menor]
        respuesta = reversed_arreglo.index(primer_menor) 
        respuestas.append(respuesta)
    return respuestas
    
for r in contar_mayores_x(arreglo,qs):
    print(r)