Online judge manual

The online training system is a tool to help you improve your programing skills. It is open to everyone, and obviously free. What follows is a guide to understand its principles and get the most out of it.


The problems given during the previous editions of the Prologin contest are archived and available on this website. You can train with the problems of the qualification and regional event problems of the previous years. They are ordered by year and difficulty: from beginner to advanced.


The exercises are evaluated by our server: your program is compiled then tested automatically. It is executed once per test. The possible errors are:

If there is a compilation error, the error output of the compiler is shown.

The output produced by your program has to match exactly with the format given in the subjects. The correction system compares the output with a reference output, character by character.

After the tests have been executed, a summary is shown, indicating which tests succeeded and which tests failed. The output of your program and the output given by the correction system is shown only for the first failed test. The exercise will only be considered solved when all the tests succeed.

The correction can take up to several minutes, so be patient.


The training system grades your submissions. Every solved exercise gives you a number of points that depends of the level of the problem and the number of failed attempts you tried. You should test your program yourself before submitting it.

Code stubs

For some languages, we provide code stubs that can "parse" correctly the data given in the standard input of the program. You only need to write the content of a stub function that takes these parsed data in parameter. Note that it is absolutely not mandatory to use these stubs, although they can be really useful most of the time.

Correction system

Time and memory limitations

Every problem enforces some limits in terms of memory usage and execution time. Some coefficients are applied on some slower or memory greedy languages. No particular limitation is applied on the stack size.

Hardware architecture

Your programs are executed in a virtual machine with an Intel(R) Xeon(R) CPU E3-1241 v3 with a clock rate of 3.50 Ghz and an x86_64 architecture. The byte order is Little Endian. The virtual machine has 1 dedicated vCPU and 3 Gio of dedicated random access memory.

Compilers and interpreters

Language Binary Version Options
Ada gnatmake 13.2.1 -f
C gcc 13.2.1 -std=c11 -Wall -Wextra -O2 -lm
C# mcs -optimize+
mono 6.12.0
C++ g++ 13.2.1 -std=c++17 -Wall -Wextra -O2
D dmd 2.105.2
Go go 1.18.10 build -buildmode=exe
Haskell ghc 9.0.2 -dynamic -O2
Java java 1.8.0
javac 1.8.0 -encoding UTF-8
javap 1.8.0
Javascript node 18.13.0
Lua lua 5.4.6
OCaml ocamlopt 5.0.0 -w A
Pascal fpc 3.2.2 -XD -Fainitc
Perl perl 5.38.0
PHP php 8.2.12
Python python3 3.11.5 -S
Ruby ruby 3.0.6
Rust rustc 1.73.0 -W warnings -C opt-level=3
Scheme gsi 4.9.4