Настанови щодо використання системи ejudge

Зміст

  1. Передмова
  2. Авторизація — вхід до змагання
  3. До початку змагання
  4. Після початку змагання
  5. Закладки для переходу до завдань
  6. Подання запитання
  7. Повідомлення від журі
  8. Подання розв'язку
  9. Журнал подання

  10. Наступні розділи призначено лише для учасників
    змагань з інформатики (програмування)

  11. Підбиття підсумків
  12. Турнірна таблиця
  13. Загальні вимоги до розв'язків — кодів програм
  14. Cтандартні потоки введення-виведення
  15. Робота з файлами
  16. Завершення програми
  17. Процес тестування програми
  18. Діагностики тестування програми

1. Передмова

В настановах описано роботу з системою ejudge непривілейованого учасника змагання (олімпіади, турніру, іспиту). Система допускає широкий діапазон налаштувань, в залежності від яких інтерфейс користувача може дещо різнитися. У цьому документі описано ті можливості, які надано учаснику ІІІ (міського) етапу олімпіади з інформатики та інформаційних технологій у місті Києві при використанні сервера Інституту післядипломної педагогічної освіти Київського педагогічного університету імені Бориса Грінченка. Після ознайомлення з цими настановами учасник майбутнього змагання до змагання повинен виконати всі дії учасника, описані у пунктах 2−9, і щонайменше отримати:

Для входження в систему використовувати надані облікові записи й паролі. За дві доби до довільного змагання (ІІІ етап олімпіади або тур відбірково-тренувальних зборів) і аж до підведення підсумків після апеляції надані паролі недійсні. У разі неможливості подання внаслікок перевищення обмеження кількості подань розв'язку для багатьох облікових записів потрібно повідомити про необхідність надати нульові значення показникам. Повідомлення надсилати за адресою rudykob@gmail.com.

2. Авторизація — вхід до змагання

  1. У вікні адреси браузера перейти за такою адресою:

    http://ejudge.kubg.edu.ua/cgi-bin/new-client?contest_id=

    де після знаку рівності ввести число — ідентифікатор змагання, що відповідає виду змагання:

    Ідентифікатор змагання призначає адміністратор ejudge при створенні змагання. Зазвичай вхід до змагання здійснюють з веб-сторінки, що містить відповідне посилання — див. перелік посилань вище.

  2. У разі відмови входу буде відображено сторінку

    з таким поясненням:


    У дозволі відмовлено. Можливі причини такі.

    1. Ви ввели недійсний або відсутній обліковий запис.
    2. Ви ввели недійсний або неправильний пароль.
    3. Ви не зареєстровані на цьому змаганні.
    4. Ваш сеанс завершено.
    5. Реєстрацію не підтверджено.
    6. Вас заборонив адміністратор.
    7. Ваша IP-адреса або протокол заборонені.
    8. Конкурс закрито для участі.

    Зауважте: точну причину не повідомлено з міркувань безпеки.

    Додаткова інформація:


    Залежно від причини, дії учасника мають бути відповідними:

    1. Перевірити, що при введенні облікового запису не переплутано великі й малі літери.

    2. Перевірте правильність введення пароля, який не відображено при введенні.

    3. Повторно здійснити вхід у систему.

    4. Якщо змагання відкрите або його модерують, то потрібно повернутися на сторінку входу і звернутися за посиланням Реєстрація. Якщо змагання закрите (як ІІІ етап олімпіади), потрібно звернутися до представника організаційного комітету, що є адміністратором змагання.

    5. Перевірити статус реєстрації на модероване змагання, перейшовши на сторінку входу і звернутися за посиланням Реєстрація. Звернутися до адміністратора змагання, щоб з'ясувати причину затримки підтвердження участі у змаганні.

    6. З'ясувати в адміністратора змагання причину блокування доступу — неприпустимі з точки зору адміністратора проступки.

    7. З'ясувати в адміністратора змагання причину блокування IP-адреси учасника. Можливо, потрібен доступ за протоколом https.

    8. З'ясувати в адміністратора змагання, як ознайомитися з результатами змагання. Завершення змагання ще не означає, що він закритий для входу учасників. Учасники можуть дивитися таблицю результатів, протоколи тестування, здані ними рішення, подавати апеляції тощо.

  3. Після успішного переходу за посиланням у вікні такого вигляду

    потрібно ввести надані представником організаційного комітету змагання:

    • обліковий запис (k004 на малюнку вище) — у поле login;
    • пароль — у поле password

    і натиснути кнопку Log in (увійти).

    Примітка При створенні нового користувача система породжує реєстраційний пароль, який потім використовують для редагування інформації про користувача. Пароль участі в турнірі система породжує за вказівкою адміністратора турніру вже після реєстрації всіх користувачів і перед початком турніру. У більшості випадків (як правило, у всіх відкритих турнірах) пароль участі в турнірі автоматично збігається з реєстраційним паролем. Однак в очних турнірах пароль участі в турнірі може відрізнятися від реєстраційного пароля.

    Якщо дані введено правильно, а користувач має право брати участь у змаганні, буде відображено сторінку учасника змагання (див. далі). Інакше буде відображено сторінку з відмовою (див. вище). Найчастіше причининою відмови є неправильно набрані обліковий запис і пароль. Тому, якщо отримано відмову входу до змагання, спочатку потрібно уважно повторити введення даних. І лише після того, якщо це не допоможе, звернутися до представника організаційного комітету.

3. До початку змагання

До початку змагання після успішного входу в систему за введеними обліковим записом і паролем учасник потрапляє на сторінку Info — інформації про змагання. Якщо змагання ще не почалося, сторінка інформації про турнір може мати вигляд, схожий на показаний нижче для відбірково-тренувальних зборів за задачами минулих років.

На малюнку вище на сірому тлі відображено обліковий запис учасника k004, назва змагання (selection). У рядку стану (буро-зеленого кольору) відображено поточний час 19:03:01, стан турніру NOT STARTED (не розпочався) і запланований час початку 19:10:02. Ці самі дані продубльовано всередині сторінки. Додатково (внизу) відображено статистику про учасників турніру.

Дати і часи вказано за годиником сервера. Саме за ним буде визначено час початку й кінця змагання. Якщо час сервера і час за Вашим годинником відрізняються, потрібно враховати це розходження протягом усього змагання. Якщо сервер під'єднаний до Інтернету, його час, як правило, буде синхронізовано з світовим астрономічним часом з точністю до часток секунди.

До початку турніру учасник може виконувати такі дії (перелічено зліва направо написи смузі бірюзового кольору):

4. Після початку змагання

Після початку змагання і авторизації учасник турніру повинен натиснути кнопку Refresh для перезавантаження веб-сторінки до такого вигляду (подано у порядку зростання ідентифікатора змагання).











Якщо завдання олімпіади з інформаційних технологій вимагатиме подання 2 або більше файлів для одного застосунку, вкладень буде більше й вони матимуть назви:

Для кожного застосунку назви вкладень перелічено у порядку згадування відповідних файлів в умові завдання.

Додатково до вже розглянутих пунктів меню: Settings (налаштування), Info (дані), Clars (повідомлення), Logout (вихід з системи) з'являться пункти меню:

Залежно від налаштувань турніру частина пунктів меню може бути відсутньою або називатися по-іншому.

На робочому полі сторінки з'явилися закладки сіро-блакитного кольору і дані про змагання:

Рядок стану турніру містить серверний час, повідомлення RUNING (змагання триває) і час до кінця змагання, якщо воно має обмежену тривалість. Дані щодо часу оновлюють щосекунди.

Адміністратор у ході змагання може зінити тривалість змагання й, відповідно, очікуваний час закінчення змагання. Для турнірів необмеженої тривалості цю інформацію не відображено, якщо тільки адміністратором не було встановлено час закінчення змагання.

У ході змагання може виникнути ситуація, коли рішення учасників будуть перетестеровано через зміни обмежень на рішення, зміни тестів тощо. Така ситуація небажана, але на змаганнях вона зустрічається. У цьому випадку заморожена таблиця буде оновлена таким чином, щоб відображати стан учасників на момент початку заморозки після перетестування. Для турнірів необмеженої тривалості заморожування не передбачено.

5. Закладки для переходу до завдань

Назва закладки є короткою назвою завдання:

Потрібно уважно вибирати закладку, бо:

Колір закладки залежить від стану завдання:

сіро-блакитний — не було спроб подати розв'язок;
блакитний — поточне завдання;
жовтий — перевіряють розв'язок для непоточного завдання;
рожевий — завдання не вирішено або вирішено частково;
салатовий — завдання вирішено повністю.

На інших серверах кольори можуть дещо відрізнятися.

6. Подання запитання

При виборі пункту меню Submit clar (подати запитання) буде відображено сторінку подання запитань журі (нижче подано ілюстрацію для олімпіади з інформатики).

Адміністратор турніру може відключити таку можливість. Тоді цей пункт меню буде недосяжний. У випадному меню Завдання можна вказати завдання, щодо якого задають питання, а у полі Тема сформулювати тему запитання. Потім у полі введення ввести власне запитання. Загальна довжина тексту обмежена і дорівнює як усталено 1024 байти. Адміністратор змагання може змінити це обмеження. Для відсилання запитання необхідно натиснути на кнопку Відправити.

7. Повідомлення від журі

Пункт меню Повідомлення дозволяє переглядати повідомлення, відправлені журі, і відповіді, отримані від журі. Якщо учасник не переглянув усі повідомлення від журі, рядок стану турніру має оливковий колір з написом про кількість непрочитаних повідомлень, як показано на наступному малюнку.

Після переходу за посиланням Clars (повідомлення) буде відображено сторінку перегляду повідомлень.

Таблиця повідомлень містить номер повідомлення Clar ID — унікальний порядковий номер повідомлення у турнірі. Всі повідомлення всіх користувачів нумерують, починаючи з 0. Стовпець Flags (прапорці) може містити такі позначки:

Стовпчик Time (час) містить час відправки повідомлення. Час вимірюють зазвичай від початку змагання. Для змагань великої або необмеженої тривалості адміністратор змагання може включити режим відображення астрономічного часу.

Стовпчик Size (розмір) містить розмір повідомлення у байтах. Як усталено його обмежено 1024 байтами, що може змінити адміністратор змагання. Розмір повідомлення від журі учаснику не обмежено.

Стовпчик From (від) містить дані про відправника, стовпчик To (кому) — дані про того, кому відправлено повідомлення.

Стовпчик Subject (тема) містить тему повідомлення.

Для перегляду повідомлення потрібно перейти за посиланням View у відповідному рядку таблиці. Щойно нове повідомлення, адресоване учаснику, буде переглянуто, рядок стану турніру знову набуде зеленого кольору.

Як усталено у таблицю виводяться останні 15 повідомлень, відправлених учасником журі. Щоб побачити всі повідомлення, необхідно перейти за посиланням View all (переглянути всі).

8. Подання розв'язку

Натисканням на закладку завдання здійснюють перехід на сторінку подання розв'язку. Вигляд сторінки залежить від типу задачі. Для завдань, що вимагають подання програми, сторінка подання розв'язку виглядає таким чином (подано для відбірково-тренувальних зборів за завданнями минулих років).

Тут у середині робочого поля відображено такі дані про завдання:

Full score: 48 — загальна кількіть балів;
Score bonus: — бонусні бали (використання цієї опції не передбачено);
Input file name: rectang.in — назва вхідного файлу;
Output file name: rectang.out — назва вихідного файлу;
Time limit: 1000 ms — обмеження на час (роботи процесора) у мілісекундах;
Real time limit: 2 s — обмеження на загальний час виконання у секундах;
Memory limit: 32 M — обмеження на оперативну пам'ять у мегабайтах.

На сторінці може бути відображено умова завдання або посилання на неї. За допомогою випадного меню Language (мова) вибирають мову програмування. Це потрібно робити дуже обережно, бо подання розв'язання з хибно вказаною умовою призводить до втрати однієї спроби подання з діагностикою Помилка компіляції. Натискання кнопки з написом Огляд... призводить до виклику вікна діалогу для вибору файлу. Натискання кнопки з написом Send! (надіслати) білими літерами на зеленому тлі призводить до подання на перевірку попередньо вибраного файлу.

Для олімпіади з інформаційних технологій в усіх номінаціях сторінки подання розв'язку виглядають таким чином:

«Офісні технології»


«Веб-програмування»


«Комп'ютерна графіка»


«Комп'ютерна анімація»

Проведення олімпіади з інформаційних технологій (в усіх номінаціях) передбачає перевірку лише після закінчення виконання завдання. Тому у цьому випадку всі подання після надходження файлу на сервер вважають успішними (колір закладки непоточного завдання — салатовий), незалежно від того, що надіслано.

Обмеження на подання
(станом на 20 листопада 2023 року)

IDВид змаганняОб'єм
одного
подання
Об'єм
всього
поданого
Кількість
надісланих
файлів
3відбірково-тренувальні
збори з інформатики
64 КБ2 МБ200
5офісні технології20 МБ40 МБ16
6веб-програмування5 МБ5 МБ1
7комп'ютерна графіка90 МБ120 МБ2
8комп'ютерна анімація1,5 ГБ2 ГБ2
9інформатика64 КБ2 МБ200

У поданій таблиці дані щодо об'єму всього поданого й кількості надісланих файлів — на час проведення офіційного змагання. У режимі тренування й тестування ці показники для олімпіади з офісних технологій буде збільшено у 100 разів.

Не передбачено надання додаткової можливості подати розв'язок у разі вичерпання обмеження на кількість подань. Тому учасник повинен самостійно вести облік кількості поданих файлів, об'єм поданих файлів й перевіряти правильність подання файлу-розв'язку. Наприклад, коди програм на бажано подавати лише після перевірки їх на дотримання обмежень щодо часу й пам'яті. Для цього учасникам змагань буде надано STS систему перевірки у режимі online.

9. Журнал подання

Перегляд журналу подання здійснюють, вибравши вказівку меню Submissions (подання) — див. приклади журналу подання для відбірково-тренувальних зборів з інформатики та олімпіади з ІТ у номінації «Офісні технології»



Як усталено показано останні 15 подань. Якщо їх було зроблено більш ніж 15, переглянути список усіх подань можна, натиснувши на посилання Переглянути всі. Рядки у таблиці розташовано у порядку, зворотньому до хронологічного, тобто пізніше подання відображено вище. Таблиця має такі стовпчики:

Примітка. Наступні розділи стосуються лише змагання з інформатики (програму­вання) і не стосуються змагань з інформаційних технологій.

10. Підбиття підсумків

Підбиття підсумків здійснюють, вибравши вказівку меню «Результат» — див. приклад сторінки результатів перевірки розв'язань завдань відбірково-тренувальних зборів з інформатики.

Закладка 01.2 — салатова, тобто завдання 01.2 вирішено повністю. Про це свідчить і запис ОК у стовпчику Result.

Закладка 01.2 — рожева, тобто розв'язок завдання 01.2 подано, але завдання не розв'язано повністю.

Правила вибору подання для остаточного підрахунку балів залежать від типу змагання. На олімпіаді та відбірково-тренувальних зборах з інформатики це — найкращий результат, тобто найбільша кількість набраних балів.

11. Турнірна таблиця

При виборі пункту меню Standings (турнірна таблиця) буде відображено поточну таблицю результатів турніру, упорядковану за спаданням результату — див. вигляд сторінки поточних результатів для відбірково-тренувальних зборів з інформатики.

Після настання моменту заморозки результатів буде показано таблицю результатів на момент заморозки.

12. Загальні вимоги до розв'язків — кодів програм

У першу чергу потрібно задовольнити вимоги умови завдання, пам'ятки учасника (якщо така є) або порядку (правил) проведення змагання.

Розв'язок-програма, подана на перевірку, має бути одним файлом з текстом програми у 8-бітової кодуванні (наприклад, cp1251) і не повинен містити байта 0. Інакше файл не буде прийнято на перевірку, і буде отримано відповідне повідомлення про помилку.

Залежно від умови задачі програма повинна:

Ніякі інші файли використовувати не можна. Програма не повинна створювати вікна діалогу, довантажувати модулі та бібліотеки, яких немає у наданому програмному забезпеченні.

  • 13. Cтандартні потоки введення-виведення

    Використання стандартних потоків введення-виведення передбачено в усіх підтримуваних мовах програмування. Розглянемо частини програм, які зчитують з одного рядка введення два цілих числа у змінні a, b і виводить їхню суму, використовуючи лише стандартні потоки введення-виведення:

  • 14. Робота з файлами

    Розглянемо приклад зчитування з одного рядка файлу input.txt двох цілих чисел у змінні a, b і виведення їхньої суми у файл output.txt. Назви файлів потрібно записувати саме так, як в умові, з дотримуванням регістру літер і без використання абсолютних чи відносних шляхів. Інакше кажучи, передбачено використання вхідних і файлів з поточної теки — тієї, що містить виконувану програму.

  • 15. Завершення програми

    В кінці роботи програма повинна закрити всі відкриті файли. Якщо у програмі мовою Free Pascal не закрити вихідний файл, то частина виведеної інформації може бути не переміщена до вихідного файлу. У програмі мовою С++ останній виконуваний оператор має бути: return 0, що забезпечує нульовий код завершення (у решті мов його буде породжено автоматично при нормальному завершенні).

  • 16. Процес тестування програми

    Процес перевірки програми здійснюють таким чином. Вихідний текст програми компілюють вказаним при поданні компілятором. При помилці компіляції перевірку завершують зі статусом Compilation error (помилка компіляції). Час компіляції обмежено, і якщо компіляція програми вимагає більше часу, ніж встановлене обмеження, перевірку завершують зі статусом Помилка компіляції (Compilation error). Як правило, спроби подання, що призвели до помилки компіляції, не враховують при обчисленні штрафних балів, але всі спроби подання враховують при перевірці квот учасника на кількість і загальний розмір поданого.

    Якщо компіляцію програми завершено успішно, виконуваний файл буде передано на тестування. Якщо при компіляції програми компілятор видав які-небудь діагностичні попередження, то їх текст учаснику не доступний. Програма вважають такою, що пройшла тест, якщо при запуску на цьому тесті програма вклалася в обмеження за часом і за пам'яттю, завершилася нормально (з кодом завершення 0) і видала правильний результат. В інших випадках вважають, що програма не пройшла тест.

    При запуску програми на кожному тесті виконують такі дії. Тестовий файл копіюють у робочу теку програми з назвою (файлу), що відповідає умові завдання. Потім — запуск програми. Під час роботи програми контролюють обмеження щодо процесорного часу, реального часу і розміру використаної пам'яті. Якщо програма завершилася з кодом повернення 0 і вклалася в обмеження щодо часу і пам'яті, запускают на виконання програму перевірки, яка порівнює відповідь, видану програмою перевірки, з правильною, наданою автором завдання.

    Контроль обмежень за пам'яттю означає контроль максимального розміру всього адресного простору процесу і розмір стека. У адресний простір процесу входить код програми, код і дані всіх використовуваних програмою динамічних бібліотек, дані програми і стек. Якщо в процесі роботи ці обмеження буде перевищено, виконання програми буде завершено з діагностикою ML (Memory limit exceeded — перевищення обмеження за памяттю). Якщо діагностику цієї помилки система не підтримує, то програму буде завершено з помилкою RT (Run-time error — помилка виконання).

    Для програм мовою Java при запуску віртуальної машини встановлюють обмеження на розмір купи (області даних) і розмір стека. У подальшому контроль цих обмежень проводить віртуальна машина Java. У разі перевищення обмежень отримують виключення, а програму знімають з виконання з діагностикою RT (Run-time error — помилка виконання). Обмеження на максимальний об'єм пам'яті і максимальний розмір стека визначають згідно з умовами задач або правилами проведення змагань. Як усталено максимальний розмір стека дорівнює 8 мегабайтам.

    Контроль обмежень за часом. При виконанні програми контролюють обмеження як процесорного, так і реального часу.

    Процесорний час — це час, витрачений процесором на виконання безпосередньо тесту. Цей час складається з часу роботи коду користувача (реалізованого алгоритму, часу на форматування виведення тощо) і часу роботи системних функцій, викликаних в процесі роботи програми (наприклад, при відкритті файлу). Час, коли процес не виконувався, а чекав завершення операції читання даних з диска або був припинений для виконання пріоритетнішого процесу, не враховують у цьому випадку. Якщо програма в процесі роботи створює кілька ниток, то процесорний час всієї програми підсумовують за всіма ниткам.

    Реальний час (роботи програми) обчислюють за годинами реального часу, враховуючи простої процесу. Як правило, реальний час незначно відрізняється від процесорного часу. Проте, якщо процес весь час очікує надходження даних або «засинає» на великий час, то процесорний час для нього зупиняється, і витрачений реальний час буде істотно більшим від спожитого процесорного. Для запобігання ситуацій, коли розв'язок «підвішує» процес тестування, контролюють реальний час. Якщо виконання програми не завершилося за відведений їй інтервал реального часу, її буде знято з виконання з діагностикою TL (Time-limit exceeded). Якщо комп'ютер підтримує одночасне виконання кількох ниток (наприклад, на багатоядерних процесорах або багатопроцесорної системі), то реальний час буде у відповідну кількість разів менший від процесорного часу (при відсутності інших процесів).

    Якщо операційна система завантажена іншими процесами, то виконання програми буде перериватися для виконання цих інших процесів. У цьому випадку реальний час може бути більшим віртуального. Тому обмеження на реальний час зазвичай встановлюєть удвічі-утричі більшими від обмежень на процесорний час.

  • 17. Діагностики тестування програми

    Діагностики тестування програми можуть бути такими:

    Подамо приклади використання перелічених дігностик.

    Якщо програму було знято з виконання або вона завершилася з будь-якої з перерахованих вище причин, вихідні дані не перевіряють. Якщо програма працювала коректно, то вихідний файл, породжений програмою, перевіряють на правильність.

    Якщо вихідний файл, необхідний за умовою задачі, відсутній або порожній, діагностують PE (Presentation error) — неправильний формат виведення. Якщо вміст вихідного файлу не відповідає вимогам до формату результату, діагностика така сама.

    Якщо вихідний файл оформлено відповідно до вимог до задачі, але відповідь не збігається з правильним, діагностика така: WA (Wrong answer) — хибна відповідь.