Conception et Pratique de l'algorithmique
UPMC - 4I505 CPA - C. Dürr

TME 6 - Arbre de segments

Tous les fichiers d'entrées sont dans ce fichier ZIP et aussi dans `/Vrac/cpa2017/tme6/`.

1. Gestion de factures

Vous êtes à la tête d'un petit commerce dans Paris, qui ouvrira ses portes le 1 janvier de l'année prochaine, et fermera après T jours d'activité. Il vous rapporte R Euros tous les jours, y compris les jours fériés et les dimanches. Vous démarrez avec un budget de 0 Euros, et à aucun moment votre budget doit devenir négatif. Maintenant vous traitez une séquence de factures, dans l'ordre dans lequel elles vous sont parvenues. Chaque facture comporte une date limite de paiement et un montant en Euros. Concrètement la i-ème facture est décrite avec 2 entiers positifs 1≤d[i]≤T et 1≤f[i]≤RT, indiquant que le d[i]-ème jour d'exercice de votre commerce vous devriez payer f[i] Euros. Pour chaque facture décidez si vous pouvez la payer en fonction des factures que vous avez déjà traité. Calculez le nombre de factures que vous pouvez payer.

Le fichier d'entrée contient n+1 lignes, la première ligne contient les entiers n, T et R séparés par des blancs, et les n lignes suivantes contiennent les entiers d[i] et f[i], décrivant chacune une facture. Ajoutez la réponse à cette URL.

Exemple d'entréeRéponse attendueExplication
            3 7 2
            4 3
            3 4
            6 7
        
2 La troisième facture ne peut plus être honorée.

2. Réservation dans une agence d'intérim

Vous êtes à la charge des réservation dans une agence d'intérim. La période de réservation débute le 1 janvier de l'année prochaine et s'étend sur W jours, jours fériés et dimanches inclus. Les jours en question sont numérotés de 1 à W. Votre entreprise dispose de H agents polyvalents, qui sont tous disponibles à tout moment pendant cette période. Pendant l'année courante pour recevez des réservations de la forme x[i], w[i], h[i] (tous des entiers avec 1≤x[i], x[i]+w[i]-1 ≤ W, 1≤h[i]≤H), qui indiquent que le client a besoin de h[i] agents à partir du jour x[i] pendant w[i] jours. Les agents sont indistinguables pour le client, il veut juste disposer d'exactement h[i] agents pendant chaque jour de la période, peu importe si des agents sont échangés en cours de route. Acceptez autant de réservations que possible dans la limite du nombre d'agents à votre disposition. Calculez le nombre de réservations que vous pouvez accepter.

Le fichier d'entrée contient n+1 lignes, la première ligne contient les entiers n, W, H séparés par des blancs, et les n lignes suivantes contiennent les entiers x[i], w[i] et h[i], décrivant chacune une réservation. Ajoutez la réponse à cette URL.

Exemple d'entréeRéponse attendueExplication
            3 11 4
            3 4 2
            5 5 1
            6 2 2
        
2 La troisième réservation ne peut plus être honorée.

Une correction

  • En Java
  • En Python, seulement pour agence d'intérim