F4 : solde par jour en un seul parcours (O(n × J) → O(n + J))

Même correction que F3 : au lieu de reparcourir les 30 000 transactions
pour chacun des 1 000 jours (30 millions de tests), chaque montant est
ajouté directement au total de son jour.

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-21 10:56:29 +02:00
parent b40294698c
commit 6c8b915aa6
+3 -5
View File
@@ -116,12 +116,10 @@ void total_par_client(const Transaction *t, int n, long *totaux)
/* F4 : solde total de chaque jour */
void total_par_jour(const Transaction *t, int n, long *totaux)
{
for (int j = 0; j < NB_JOURS; j++) {
for (int j = 0; j < NB_JOURS; j++)
totaux[j] = 0;
for (int i = 0; i < n; i++)
if (t[i].jour == j)
totaux[j] += t[i].montant;
}
for (int i = 0; i < n; i++) /* un seul parcours, comme pour F3 */
totaux[t[i].jour] += t[i].montant;
}
/* F5 : période de jours consécutifs dont la somme des soldes est maximale */