О языках программирования в тестирующей системе
Решения участников компилируются и запускаются под управлением операционной системы Linux на платформе x86 (32 бита).
В данных, подаваемых на вход тестируемым программам, каждая строка завершается одним байтом (код 10), а не двумя байтами (коды 13, 10), как в операционных системах семейства Windows.
Для компиляции и запуска решений на сервере используются следующие компиляторы или интерпретаторы:
Участникам для проверки заданий в тестирующей системе будут доступны следующие языки программирования и компиляторы:
| Обозначение | Компилятор, версия | Строка компиляции (интерпретации) | 
| fpc-32 | Free Pascal 2.6.2 | fpc PROG | 
| gcc-32 | GNU C 4.8.2 | g++ -m32 -O2 -std=gnu++11 PROG | 
| g++-32 | GNU C++ 4.8.2 | g++ -m32 -O2 -std=gnu++11 PROG | 
| clang-32 | CLANG C 3.3 | clang -m3 -O2 PROG | 
| clang++-32 | CLANG C++ 3.3 | clang++ -m32 -O2 PROG | 
| dcc | Borland Delphi 6 (Kylix) 14.5 | dcc -Q PROG | 
| python | Python 2.7.5 | python PROG | 
| perl | Perl 5.16.3 | perl PROG | 
| javac | Oracle JDK 1.7.0_40 | javac PROG | 
| ruby | Ruby 2.0.0p353 | ruby PROG | 
| php | PHP 5.5.8 | php -nf PROG | 
| python3 | Python 3.3.2 | python3 PROG | 
| mcs | Mono C# 2.10.8.0 | gmcs -optimize+ PROG | 
| kumir | Кумир 1.7 | ckumir PROG | 
| fbc | FreeBASIC 0.90.1 (режим совместимости с QuickBasic) | fbc -lang qb PROG | 
| fbc-32 | FreeBASIC 0.90.1 (32-битный режим) | fbc PROG | 
| pasabc-linux | PascalABC.NET 1.8.0.513 | pabcnetcclear.exe PROG | 
Обращаем внимание, что тестирование многих языков программирования (Free Pascal, Delphi, GNU C++) проводится под операционной системой Linux, даже если участник использует операционную систему Windows.
Жюри рекомендует участникам перед сдачей решений проверять работу своих программ, откомпилировав их при помощи указанных в таблице выше команд. Ситуация, когда программа работает по-разному из-за разных ключей компиляции, не является поводом для апелляции. Жюри проверяет программы только скомпилированные указанным выше способом, и не будет проверять решения учащихся, если результат исполнения их программ отличается при другом способе компилирования исходного кода.
Ввод-вывод данных может быть организован как с использованием файлов, так и с использованием стандартного ввода-вывода.
В случае использования файлов программа должна читать данные из файла, имя которого указано в условии задачи и выводить результат работы в другой файл, имя которого также указано в условии задачи.
Другой способ - программа читает входные данные со стандартного ввода (клавиатуры) и выводит результат на стандартный вывод (экран).
По техническим причинам в программах на языке Mono С# и Visual Basic возможен только файловый ввод-вывод.
Особенности некоторых языков программирования
Названия используемых модулей должны быть записаны с учетом регистра.
Правильное написание:
uses Math;
uses SysUtils;
Написания math и sysutils - неверные.
Нельзя использовать модуль crt.
Функция main должна возвращать значение
типа int. Правильно: int main(). Неправильно:
void main(). Значение, возвращаемое функцией main всегда
должно быть равно 0.
По умолчанию в тестирующей системе не подключается ни один заголовочный файл, таким образом, обязательно необходима директива
#include <stdio.h>
в программе на C или
#include <iostream>
в программе на C++.
Системно-зависимые особенности ввода-вывода
При считывании текстов следует учитывать, что в разных операционных системах концы строк в текстовых файлах кодируются по-разному. А именно:
В системе Linux конец строки кодируется одним байтом с кодом 0A (шестнадцатеричным).
В системах Windows и DOS концы строк кодируются двумя байтами с кодами 0D 0A (шестнадцатеричными).
Это необходимо иметь в виду при разработке программы. Лучше всего при считывании данных использовать функции языка программирования, которые целиком считывают строки, автоматически определяя концы строк, независимо от используемой операционной системы.
В тестирующей системе программы запускаются в английской локали (точнее, с установленной стандартной локалью POSIX), между тем у участников на компьютере в операционной системе может использоваться русская локаль. Это может повлиять на функции ввода-вывода, использующие параметры системной локали.