Ryad Mehiri 922703999f F5 : meilleure période en un seul parcours (O(J³) → O(J))
La triple boucle recalculait la somme de chaque période (i, j) :
J(J+1)(J+2)/6 = 167 millions d'additions pour 1 000 jours. Avec les
sommes préfixes, la meilleure période finissant au jour j commence
juste après le plus petit préfixe vu jusque-là : un seul parcours
suffit. En gardant le premier minimum et en ne remplaçant le meilleur
que s'il est strictement dépassé, on retrouve la même période que
l'original en cas d'égalité (vérifié sur 200 000 tableaux aléatoires).

Temps (-O2) : 0,25 s → 0,10 s. Empreinte inchangée (ff68d260a7a58441).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:55:53 +02:00
2026-10-21 08:17:46 +02:00
2026-10-21 08:17:46 +02:00

TD3 — Complexité algorithmique (R5.A.04)

Fichiers

  • banque.c : le programme à analyser et à optimiser
  • evaluer.sh : vérifie votre solution et mesure son temps d'exécution pour le concours

Démarrage

gcc -O2 banque.c -o banque
time ./banque                      # notez le temps et l'empreinte
gcc -O0 -g -pg banque.c -o banque_pg
./banque_pg && gprof ./banque_pg gmon.out > profil_avant.txt

Règles

  • L'empreinte affichée doit rester ff68d260a7a58441.
  • Interdit : modifier les constantes, alea, generer_transactions ou le format du rapport, écrire les résultats en dur, utiliser des threads ou des bibliothèques externes.
  • Autorisé : changer les signatures, réorganiser main, ajouter fonctions et structures, utiliser la bibliothèque standard du C.

Rendu

  • Un commit par optimisation.
  • COMPTE_RENDU.md à la racine : complexités avant / après de F1 à F10, profils gprof avant / après, justification de chaque optimisation.
  • Concours : ./evaluer.sh banque.c <votre_nom> vérifie l'empreinte et mesure le temps. La complexité cyclomatique est calculée à la main et vérifiée par l'enseignant.
S
Description
No description provided
Readme 1.1 MiB
Languages
C 89.5%
Shell 10.5%