Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice sur france IOI - emprunt de livre

Sujet résolu
    16 juillet 2019 à 19:39:15

    bonjours, je bloque actuelement depuis 2 jours sur cette exercice sans comprendre ce qui bloque.

    voici l'énoncé.

    Ce que doit faire votre programme :

    La bibliothèque possède nbLivres livres indexés de 0 à nbLivres - 1. Chaque jour, un certain nombre de clients demandent à emprunter des livres pour une certaine durée. Si le livre est disponible, la requête du client est satisfaite, sinon le client repart sans livre.

    Votre programme doit d'abord lire sur une première ligne deux entiers : nbLivres <= 1000 et nbJours. Pour chacun des jours, votre programme lira un entier nbClients sur une ligne puis nbClients lignes de deux entiers. Le premier entier correspond à l'indice du livre et le second la durée correspondante. (voir l'exemple d'entrée). Il affichera ensuite, sur des lignes séparées, pour chaque client un 1 si le livre peut être prêté et 0 dans le cas contraire.

    On remarquera que si un client emprunte un livre le jour iJour pendant une durée duree alors celui-ci ne sera de nouveau disponible qu'au jour iJour + duree. De plus, si plusieurs personnes demandent le même livre pendant une journée, seule la première a une chance d'être satisfaite.

    Limites de temps et de mémoire (Python)

    • Temps : 2 s sur une machine à 1 GHz.
    • Mémoire : 8 000 ko.
    nbLivres,nbJour = map(int,input().split(" "))
    nbLivres = [0] * (nbLivres)
    
    for ijour in range(nbJour):
       nbClient = int(input())
       for loop in range(nbClient):
          indiceLivre,duré = map(int,input().split(" "))
          if nbLivres[indiceLivre] == 0:
             print("1")
             nbLivres[indiceLivre] += duré - 1
          else:
             print("0")
             
       for i in nbLivres:
          if i > 0:
             i -= ijour
          print("indiceLivre",i)
       

    et voici le résultat:

    1
    1
    indiceLivre 2
    indiceLivre 2
    0
    indiceLivre 1
    indiceLivre 1
    0
    indiceLivre 0
    indiceLivre 0
    0
    0
    indiceLivre -1
    indiceLivre -1

    au lieu de:

    1
    1
    0

    0
    1
    0


    *j'ai rajoité indiceLivre pour savoir si les modification était bien prise en compte. j'ai aussi ajouté un "-1" à la duré pour etre sur que les livres

    soit a nouveau de valeur "0".

    et le probleme c'est que lorsque je rentre dans ma boucle la 1er fois tout les livres on un index de "0" donc ils sont disponible, python fait un print de "1"

    logique, les livres perde 1 a chaques jour qui passe, mais lorsqu'il sont a nouveau a "0". a ce moment la la duré d'indisponibilté n'est plus mis a jour. et je comprend pas pourquoi au début c'est mis a jour et pas la seconde fois.

    merci de me mettre sur la bonne voie svp :)



    • Partager sur Facebook
    • Partager sur Twitter

    Exercice sur france IOI - emprunt de livre

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    • Editeur
    • Markdown