Компиляторы
Для проверки решений используются компиляторы
Free Pascal 3.0 (совместим с Delphi/Turbo Pascal),
GNU C/C++ 14.3, clang C++ 18.1,
Free Basic 1.0 (совместим с Quick Basic),
GNU Prolog 1.4,
Chicken Scheme 5.4,
Haskell 8.0,
Python 3.12,
OpenJava SE 1.8,
Kotlin 2.2,
Mono C# 6.12,
Visual Basic 4.8,
PascalABC.NET 3.8,
Lua 5.4,
LuaJIT 2.1 (Lua 5.1),
QuickJS, SpiderMonkey JS (ECMA/JavaScript 2023),
Bison 3.0.5,
RE/flex 1.0.4, go 1.23, dart 3.8, rust 1.76,
cppfront (C++ syntax 2)
Опции компиляции:
| C | gcc -Wall -static -std=c17 -s -O2 -o program program.c -lm |
| C++ | g++ -Wall -static -std=gnu++20 -s -O2 -o program program.cpp -lm |
| | clang++ -Wall -static -std=gnu++20 -s -O2 -o program program.cpp |
| Free Pascal | fpc -Sd -Cr -Ct -Ci -XS -O2 -vw program.pas |
| PascalABC.NET | pabcnetcclear.exe program.pas |
| C# | mcs -optimize program.cs |
| Rust | rustc -C opt-level=3 program.rs |
| Basic | fbc -lang qb program.bas |
| Visual Basic | vbnc program.vb |
| Java | javac program.java |
| Prolog | gplc -o program --min-bips program.pl |
| Scheme | csc -static -ignore-case program.scm |
| Haskell | ghc -optl-static -optl-pthread program.hs |
| Python | python -I -m py_compile program.py |
| Lua | luac -o program.luac program.lua |
| luajit -b program.lua program.o |
| Kotlin | kotlinc program.kt -jvm-target 1.8 -include-runtime -d program.jar |
| ECMA/JavaScript | qjsc -e program.js |
| | js115 -c program.js |
| Bison | bison -oprogram.cpp program.lex |
| RE/flex | reflex --flex -oprogram.cpp program.grm |
Для C++ установлена библиотека шаблонов
boost.multiprecision для работы с длинными целыми и рациональными числами (
cpp_int,
cpp_dec_float,
cpp_rational).
В языках C#/Visual Basic разрешен только ввод-вывод через Console и запрещены некоторые пространства имен и классы. Получение доступа к пространствам имен только через using/imports.
Аналогично запрещены некоторые модули и функции в языке Python (из sys только stdin, stdout, setrecursionlimit, exit, maxsize, argv, int info, float info, byteorder, maxunicode, setdefaultencoding), ввод-вывод только через print, input и stdin/stdout. В Python добавлен модуль
pcio, содержащий упрощенные функции: input для форматированного ввода (аналог Lua и QuickJS), print/println для вывода (аналог C# Console.Write/WriteLine) и encoding для установки кодировки.
В Lua запрещены некоторые модули и функции. В LuaJIT можно применять предзагруженный модуль bit для поразрядных операций.
В ECMAScript для ввода используется функция input(), возвращающая очередную строку ввода или null, для вывода – функция print(значение).
В ограничениях времени в условиях задачи первое число указано для компилируемых языков C/C++/Free Pascal/GNU Prolog/Haskell, второе число – для интерпретируемых/JIT языков. По умолчанию второе время в 2 раза больше и не менее 0.5 секунды. Иногда второе ограничение может быть установлено по времени работы эталонного решения на JIT-языке.