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

Envío 719

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

  • Autor: cposada8
  • Fecha: 2020-09-14 16:44:02 UTC (Hace más de 4 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.021 s 3 KBi
#2
Correcto
0.024 s 3 KBi
#3
Correcto
0.023 s 3 KBi
#4
Correcto
0.022 s 3 KBi
#5
Correcto
0.023 s 3 KBi
#6
Correcto
0.026 s 3 KBi
#7
Correcto
0.022 s 3 KBi
#8
Correcto
0.022 s 3 KBi
#9
Correcto
0.023 s 3 KBi
#10
Correcto
0.028 s 4 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()))


# arreglo = [3, 4, 1, 2, 2,6]

def contar_mayores_x(arreglo, qs):
    arreglo.sort()
#     print(arreglo)
    reversed_arreglo = sorted(arreglo, reverse=True)
#     print(reversed_arreglo)
    
    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
#         print("index_primer_menor", index_primer_menor)


        primer_menor = arreglo[index_primer_menor]
#         print("primer_menor",primer_menor)
        respuesta = reversed_arreglo.index(primer_menor) 
#         print(respuesta)
        respuestas.append(respuesta)
    return respuestas
    

for r in contar_mayores_x(arreglo,qs):
    print(r)