Bonsoir,
Je suis en train de chercher l'exercice 5 des qualifications. J'ai trouvé quelque chose, malheureusement trop lent et ne passe pas les gros tests (à partir du 16ème).
J'avais une première fois codé mon algorithme en Python. Le système coupe alors le test au bout de 15 secondes, le jugeant trop long. Je pensais au début que mon code s'exécutait en exactement 15 secondes, mais en voyant que même en divisant le temps de calcul par plus de 10 (grâce à des optimisations), je reste à 15 secondes, j'ai alors compris qu'il s'agissait d'un seuil.
Cherchant à vraiment optimiser, j'ai changé de langage et suis passé en Java. Le résultat est plutôt satisfaisant : pour le même algorithme, je mets 4 à 5 fois moins de temps qu'en Python. J'ai alors soumis mon nouveau programme en Java (voir si je pouvais enfin passer le test 16), mais malheureusement il se coupe au bout de 4,29 secondes. Je me demandais alors : mon programme s'est-il vraiment arrêté en 4,29 secondes ou a-t-il été stoppé avant la fin de son exécution ?
Et surtout, pourquoi ces temps ne correspondent pas à celui de l'énoncé qui est de 1000 millisecondes ?
Bon après, je sais bien que mon algorithme ne pourra jamais faire tourner les tests avec L = 2 000 000 tant qu'il gardera une complexité en O(n²). C'est vraiment possible de faire moins ?