Bonjour, j'ai un exercice très bizarre que je n'arrive pas à résoudre,le voici:

Pour attirer les touristes ,un casino de Las Vegas propose un buffet à volonté
où chacun paye ce qu'il souhaite payer.

Sachant que vous connaissez ce que chaque touriste est prêt à payer, on vous
demande de calculer les gains du restaurant pour la journée:
  • En début de journée , le restaurant est vide.
  • Un touriste arrive,est placé,mange,paye et s'en va.
  • il y'a seulement nbSeats places disponibles.Un touriste peut manger et payer
    seulement s'il peut être placé.
  • Si un touriste arrive au restaurant alors qu'il n'y a plus de places disponibles:
    • Soit il attend son tour jusqu'à ce qu'une place se libère
    • Soit il attend un moment et part avant qu'une place se libère
  • Un touriste peut venir plusieurs fois dans la journée dans ce cas il ne paye au maximum
    qu'une seule fois.


implémentez la méthode computeDayGains(nbSeats,payingGuests,guestMovements) qui renvoie les gains
de la journée:
  • Le tableau payingGuests contient ce que chaque touriste est prêt à payer.Par exemple si payingGuests[5] vaut 25,
    cela veut dire que le touriste avec l'identifiant 5 est prêt à payer 25$ pour le buffet.
  • Le tableau guestMovements donne l'ordre des arrivées et des départs de touristes.La première fois que vous
    trouvez un identifiant dans le tableau, il s'agit d'une arrivée.La deuxième fois ,il s'agit d'un départ.Une arrivée est
    toujours suivie d'un départ dans la journée.


Voici le code qu'il faut compléter:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class Solution {
 
       public static int computeDayGains(int nbSeats,int[] payingGuests,int[] guestMovements){
 
 
 
               return 0;
 
                  }
 
              }
Voici le code que j'ai proposé:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
 
       public static int computeDayGains(int nbSeats , int[] payingGuests , int[] guestMovements){
 
                              int sum=0;    
                         for (int i=0;i< payingGuests.length;i++){
 
                               sum=sum+payingGuests[i];                                                                  
 
 
 
                  }
                    return (nbSeats*sum);
 
              }
guestMovements
est un array et je ne sais pas comment l'utiliser dans le calcul des gains de la journée,
Avez - vous une idée ?