[Python-es] Las ambulancias

Alejandro perezj en si.uji.es
Mie Nov 27 12:48:23 CET 2002


Una solución ?? No he hecho muchas pruebas :-)

from mx.DateTime import DateTime, oneDay

# Leemos y ordenamos el fichero para guardar
# en servicios un lista de tuplas con el inicio
# y final de cada servicio.
#
# Hay que guardar las cosas ordenadamente Chema !! ;-)
# que luego cuesta mucho recogerlas

servicios = []

for i in file( "SIMUL.TXT" ) :

  try :

    year  = int(i[15:19])
    mes   = int(i[19:21])
    dia   = int(i[21:23])
    horai = int(i[5:7])
    minui = int(i[8:10])
    horaf = int(i[10:12])
    minuf = int(i[13:15])
    if horai + minui + horaf + minuf == 0 :
      raise
    inicio = DateTime( year, mes, dia, horai, minui )
    final  = DateTime( year, mes, dia, horaf, minuf )

    if inicio >= final :
      final = final + oneDay
    servicios.append( ( inicio, final ) )

  except :
    print "Linea incorrecta:", i

servicios.sort()

#
# Solucion
#

finales = []
maxser  = activos = 0

for inicio, final in servicios :

  finales.append( final )
  finales.sort()

  while finales and finales[0] <= inicio :
    finales.pop( 0 )
    activos -= 1

  activos += 1

  if activos > maxser :
    maxser = activos
    maxfec = inicio


print maxfec, maxser



















-- 
Alejandro <perezj en si.uji.es>
UJI





Más información sobre la lista de distribución Python-es