Messages d'erreur

Lorsque vous testez ou soumettez une solution pour un problème, celle-ci peut facilement être jugée incorrecte par notre serveur. Voici une liste des erreurs que vous pouvez rencontrer.

Si vous ne comprenez pas du tout d'où peut venir l'erreur après avoir lu cette page et appliqué les éventuels conseils, posez une question sur le forum afin que l'on vous aide à la comprendre et à la dépasser.

Erreur de compilation

Erreur de compilation :
...

Ce message indique que le serveur n'a pas réussi à compiler votre programme et à générer un exécutable. Aucun point ne vous est retiré dans ce cas. Si le programme compilait chez vous, vérifiez que vous avez sélectionné le bon langage, et que vous n'utilisez pas de bibliothèques de fonctions non standard.

Erreur dans le résultat

La réponse donnée par votre programme est incorrecte.
Il a affiché :
Le nombre est : 50
au lieu de :
50

Pour vous aider, voici le premier caractère différent :
<span class="badChar">L</span>e nombre est : 50

Cette erreur est la plus classique : votre programme s'est exécuté jusqu'au bout, mais le résultat fourni n'est pas le bon : il ne correspond pas à ce qui est demandé dans le sujet. Souvent, l'évaluateur affiche le résultat retourné par vorte programme, et la solution attendue.

Attention : l'évaluateur compare précisément votre solution à la solution attendue. Si vous avez ajouté du texte par rapport à ce qui est demandé, votre solution sera considérée comme fausse, même si le calcul est correct. Respectez scrupuleusement le format de sortie indiqué dans le sujet.

Si votre solution est effectivement différente de celle attendue, il s'agit d'une erreur dans votre algorithme, qui ne répond pas correctement à la question posée. Relisez bien le sujet, et vérifiez votre algorithme sur d'autres exemples, pour essayer de trouver ce qui ne fonctionne pas.

Notez les choses suivantes :

Erreur d'exécution

Erreur d'exécution. Voici ce qui a été affiché :

Votre programme s'est terminé en indiquant qu'une erreur s'est produite. Dans les langages C++, OCaml, Java/JavaScool et Python, il peut s'agir d'une exception émise par votre programme, et non interceptée.

Par exemple en OCaml :

L'erreur peut aussi correspondre à un code de sortie différent de zéro. Par exemple, si vous avez écrit un programme C qui se termine par return 42, le message suivant s'affichera :

Exited with error status 42

Votre programme doit en effet toujours retourner 0 (ce qui correspond au cas par défaut avec tous les langages).

Vous pouvez également obtenir l'erreur suivante :

Forbidden syscall clone

qui indique que votre programme a appelé une fonction que nous n'autorisons pas sur notre serveur pour des raisons de sécurité. Par exemple, il peut s'agir d'une instruction system("pause"); (en C), ou d'un appel à une fonction de manipulation de fichiers.

Erreur de segmentation

Votre programme a échoué à la suite d'un accès mémoire en dehors des zones réservées, ou d'un dépassement de la limite de mémoire.

Comme l'indique le message, l'erreur peut être de deux types :

Dépassement de la limite de temps

Votre programme a dépassé la limite de temps.

Votre programme ne s'est pas terminé dans la limite de temps indiquée dans le sujet. Il peut s'agir d'un bogue dans votre programme qui entraîne une boucle infinie, ou tout simplement d'un algorithme qui n'est pas suffisamment efficace. Essayez d'estimer le temps que prend votre programme dans le pire cas, et comparez à la limite de temps du sujet. Si vous dépassez largement cette limite, c'est qu'il faut trouver un meilleur algorithme.

Lorsque la limite de temps est dépassée, votre programme est interrompu avant de fournir un résultat. On ne vous indique donc pas si ce résultat aurait été correct ou non.