Компиляторы
Для проверки решений используются компиляторы
Free Pascal 3.0 (совместим с Delphi/Turbo Pascal),
GNU C/C++ 11.3, clang C++ 18.1,
Free Basic 1.0 (совместим с Quick Basic),
GNU Prolog 1.4,
Chicken Scheme 4.13,
Haskell 8.0,
Python 3.10,
OpenJava SE 1.8,
Kotlin 1.6,
Mono C# 6.12,
Visual Basic 4.8,
PascalABC.NET 3.8,
Lua 5.4,
LuaJIT 2.0 (Lua 5.1),
QuickJS, SpiderMonkey JS (ECMA/JavaScript 2023),
Bison 3.0.5,
RE/flex 1.0.4
Опции компиляции:
C | gcc -Wall -static -std=gnu17 -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 |
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) и библиотека
format из C++20.
В языках 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-языке.