DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc.

Similar documents
DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc.

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc.

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc.

DOMjudge team manual. Summary. Reading and writing. Submitting solutions. Viewing scores, submissions, etc.

1 DOMjudge Overview Scoreboard... 2

Algorithms for Programming Contests - Week 1

Kattis Team Guide version 1.1

ACM SOUTH PACIFIC DIVISIONAL PROGRAMMING CONTEST

4 th Annual Virginia Tech High School Programming Contest (2017)

Overview. - General Data Types - Categories of Words. - Define Before Use. - The Three S s. - End of Statement - My First Program

CS 152: Data Structures with Java Hello World with the IntelliJ IDE

Welcome to Python 3. Some history

Australian Informatics Olympiad Thursday 23 August, Information Booklet

How to Use the System

CS31 Discussion 1E. Jie(Jay) Wang Week1 Sept. 30

DOMjudge Jury Manual. by the DOMjudge team Fri, 29 Dec :00:

COMP322 - Introduction to C++ Lecture 02 - Basics of C++

2005 Stanford Local Programming Contest

CS 31 Discussion 1A, Week 1. Zengwen Yuan (zyuan [at] cs.ucla.edu) Humanities A65, Friday 10:00 11:50

8. The C++ language, 1. Programming and Algorithms II Degree in Bioinformatics Fall 2017

2004 Stanford Local Programming Contest

The NetBeans IDE is a big file --- a minimum of around 30 MB. After you have downloaded the file, simply execute the file to install the software.

What s New In PC MyJudgements Tab. Each Judge screen now includes a grid showing all the runs which have previously been judged by that Judge.

DOMjudge An automated judge system for programming contests. Programming Systems Group Martensstr Erlangen Germany

Official Competition Manual March 2, 2005

Reading from and Writing to Files. Files (3.12) Steps to Using Files. Section 3.12 & 13.1 & Data stored in variables is temporary

CS31 Discussion 1E. Jie(Jay) Wang Week3 Oct.12

Tips from the experts: How to waste a lot of time on this assignment

Basic program The following is a basic program in C++; Basic C++ Source Code Compiler Object Code Linker (with libraries) Executable

Introduction. Bjarki Ágúst Guðmundsson Tómas Ken Magnússon. Árangursrík forritun og lausn verkefna. School of Computer Science Reykjavík University

Algorithms and Programming I. Lecture#12 Spring 2015

Berkeley Practice Contest Fall P. N. Hilfinger

Discussion 1H Notes (Week 3, April 14) TA: Brian Choi Section Webpage:

ACM INTERNATIONAL COLLEGIATE PROGRAMMING CONTEST. California State University, Sacramento s. Contestant s Guide

the gamedesigninitiative at cornell university Lecture 6 C++: Basics

Tutorial 2: Compiling and Running C++ Source Code

Security Coding Module - Buffer Overflow Data Gone Wild CS1

COMP322 - Introduction to C++

Consider the above code. This code compiles and runs, but has an error. Can you tell what the error is?

Computer Programming : C++

Darrell Bethea May 10, MTWRF 9:45-11:15 AM Sitterson 011

Do not turn to the next page until the start of the exam.

Linux Tutorial #1. Introduction. Login to a remote Linux machine. Using vim to create and edit C++ programs

2006 Stanford Local Programming Contest

CS 231 Data Structures and Algorithms, Fall 2016

COMP322 - Introduction to C++ Lecture 01 - Introduction

CS 11 java track: lecture 1

CS102: Standard I/O. %<flag(s)><width><precision><size>conversion-code

Lecture Notes CPSC 224 (Spring 2012) Today... Java basics. S. Bowers 1 of 8

Problem Set 1: Unix Commands 1

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

CS246-Assign01 V1.1: Winter 2013

Chapter 2 C++ Fundamentals

File Operations. Lecture 16 COP 3014 Spring April 18, 2018

int n = 10; int sum = 10; while (n > 1) { sum = sum + n; n--; } cout << "The sum of the integers 1 to 10 is " << sum << endl;

Unit 7. 'while' Loops

Week 1: Hello World! Muhao Chen

New York University Introduction to Computer Science Exam Sample Problems 2013 Andrew I. Case. Instructions:

the gamedesigninitiative at cornell university Lecture 7 C++ Overview

Chapter 1: Why Program? Computers and Programming. Why Program?

CS2141 Software Development using C/C++ C++ Basics

Welcome to MCS 360. content expectations. using g++ input and output streams the namespace std. Euclid s algorithm the while and do-while statements

Functions and Methods. Questions:

2.1. Chapter 2: Parts of a C++ Program. Parts of a C++ Program. Introduction to C++ Parts of a C++ Program

In the hardware module, you saw the basic execution of a program Programs are written in specific languages Each language has it s strengths and

CSE 401/M501 18au Midterm Exam 11/2/18. Name ID #

Section 003 Fall CS 170 Exam 1. Name (print): Instructions:

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Java Basics

CSCE 206: Structured Programming in C++

PROGRAMMING OLYMPIAD FINAL ROUND Environment Manual. 1 Introduction 2. 2 Local environment 2

Programming II (CS300)

CSCE Practice Midterm. Data Types

Hangman - Compsci 201

G52CPP C++ Programming Lecture 17

Array. Prepared By - Rifat Shahriyar

Computer Science II Lecture 1 Introduction and Background

Introduction to Programming I COS1511 School of Computing Revision Notes

Lesson 2 Variables and I/O

Information Packet Trinity University ACM High School Programming Competition 2011

Chapter 2: Overview of C++

C and C++ I. Spring 2014 Carola Wenk

READ THIS NOW! Do not start the test until instructed to do so!

1- Write a single C++ statement that: A. Calculates the sum of the two integrates 11 and 12 and outputs the sum to the consol.

Note: The buy help from the TA for points will apply on this exam as well, so please read that carefully.

Polymorphism Part 1 1

CIS220 In Class/Lab 1: Due Sunday night at midnight. Submit all files through Canvas (25 pts)

Object-oriented programming in...

There are several files including the start of a unit test and the method stubs in MindNumber.java. Here is a preview of what you will do:

Programming II (CS300)

11. Arrays. For example, an array containing 5 integer values of type int called foo could be represented as:

5/3/2006. Today! HelloWorld in BlueJ. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont.

Welcome Back. CSCI 262 Data Structures. Hello, Let s Review. Hello, Let s Review. How to Review 1/9/ Review. Here s a simple C++ program:

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Project 1 (document version 1.3) Process Simulation Framework

Discussion 1E. Jie(Jay) Wang Week 10 Dec.2

BlueJ Demo. Topic 1: Basic Java. 1. Sequencing. Features of Structured Programming Languages

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 3: SEP. 13TH INSTRUCTOR: JIAYIN WANG

1 Unit 8 'for' Loops

PIC 10A Pointers, Arrays, and Dynamic Memory Allocation. Ernest Ryu UCLA Mathematics

Multiple Choice (Questions 1 14) 28 Points Select all correct answers (multiple correct answers are possible)

Chapter 3 - Notes Input/Output

Transcription:

judge DOMjudge team manual Summary /\ DOM DOM judge This page gives a short summary of the system interface. The summary is meant as a quick introduction, to be able to start using the system. It is, however, strongly advised your team reads the entire document. There are specific details of this contest control system that might become of importance when you run into problems. BE WARNED! DOMjudge works through a web interface that can be found at https://domjudge/team. See figures 1 and 2 on the next page for an impression. Reading and writing Solutions have to read all input from standard in and write all output to standard out (also known as console). You will never have to open (other) files. See the technical notes for more details and appendix A for some code examples. Submitting solutions You can submit solutions with the command-line program submit or from the web interface: Command-line Use submit <filename>. If your filename is of the form <problem>.<extension> where <problem> is the label of the problem and <extension> is a standard extension for your language, then these will automatically be detected. It will also try to auto-detect the main class (for Java and Kotlin) or the main file (for Python 2 and Python 3). You can override these auto-detections; for a complete reference of all options and examples, see submit --help. Web interface From your team page, https://domjudge/team, click the green Submit button in the menu bar. Select the file(s) you want to submit. By default, the problem is selected from the base of the (first) filename and the language from the extension. Again, the web interface tries to auto-detect the main class (for Java and Kotlin) or the main file (for Python 2 and Python 3) from the file name. Double check that the guess is correct before submitting. Viewing scores, submissions, etc. Viewing scores, submissions and sending and reading clarification requests and replies is done through the web interface at https://domjudge/team. End of summary DOMjudge team manual Generated: March 21, 2018 1

Figure 1: The team web interface overview page. Figure 2: The scoreboard webpage. 2 DOMjudge team manual Generated: March 21, 2018

1. Submitting solutions 1 Submitting solutions Submitting solutions can be done in two ways: with the command-line program submit or using the web interface. 1.1 Command-line: submit Syntax: submit [options] filename.ext... The submit program makes some guesses based on the name and extension of the file to submit: It guesses the name (label) of the problem from filename and the programming language from the extension ext. For Java it uses the filename as a guess for the main class; for Kotlin it capitalizes filename and appends Kt to compute the guess for the main class name. For Python 2 and 3, the first filename is used as a guess for the main file. These guesses can be overruled with the options -p problemname, -l languageextension and -e entry point. See submit --help for a complete list of all options, extensions and some examples. Use submit --help more when the help text does not fit on one screen. submit will check your file and warns you for some problems: for example when the file has not been modified for a long time or when it s larger than the maximum source code size (see section 4.4). Filenames must start with an alphanumerical character and may contain only alphanumerical characters and +. -. You can specify multiple files to be part of this submission (see section 4 How are submissions being judged? ). Then submit displays a summary with all details of your submission and asks for confirmation. Check whether you are submitting the right file for the right problem and language and press y to confirm. submit will report a successful submission or give an error message otherwise. The submit program uses a directory.domjudge in the home directory of your account where it stores temporary files for submission and also a log file submit.log. Do not remove or change this directory or its contents, otherwise the submit program might fail to function correctly. 1.2 Web interface Solutions can be submitted from the web interface at https://domjudge/team. Click the green Submit button at the menu bar on every page. Click the file selection button and select one or multiple files for submission. DOMjudge will try to determine the problem, language and main class (in case of Java and Kotlin) or main file (in case of Python 2 and 3) from the base and extension of the (first) filename. Otherwise, select the appropriate values. Filenames must start with an alphanumerical character and may contain only alphanumerical characters and +. -. After you hit the submit button and confirm the submission, you will be redirected back to your submission list page. On this page, a message will be displayed that your submission was successful and the submission should be present in the list. An error message will be displayed if something went wrong. DOMjudge team manual Generated: March 21, 2018 3

2. Viewing the results of submissions 2 Viewing the results of submissions The left column of your team web page shows an overview of your submissions. It contains all relevant information: submission time, programming language, problem and status. The address of your team page is https://domjudge/team. The top of the page shows your team s row in the scoreboard: your position and which problems you attempted and solved. Via the menu you can view the public scoreboard page with the scores of all teams. Many cells will show additional title text information when hovering over them. The score column lists the number of solved problems and the total time including penalty time. Each cell in a problem column lists the number of submissions, and if the problem was solved, the time of the first correct submission in minutes since contest start. This is included in your total time together with any penalty time incurred for previous incorrect submissions. The scoreboard will be frozen some time before the end of the contest. The full scoreboard view will not be updated anymore, but your team row will. Your team s rank will be displayed as?. Finally, via the top menu you can also view the list of problems and view/download problem texts and sample data, if provided by the judges. 2.1 Possible results A submission can have the following results: CORRECT The submission passed all tests: you solved this problem! Correct submissions do not incur penalty time. COMPILER-ERROR TIMELIMIT RUN-ERROR WRONG-ANSWER TOO-LATE There was an error when compiling your program. On the submission details page you can inspect the exact error. Note that when compilation takes more than 60 seconds, it is aborted and this counts as a compilation error. Compilation errors do not incur penalty time. Your program took longer than the maximum allowed time for this problem. Therefore it has been aborted. This might indicate that your program hangs in a loop or that your solution is not efficient enough. There was an error during the execution of your program. This can have a lot of different causes like division by zero, incorrectly addressing memory (e.g. by indexing arrays out of bounds), trying to use more memory than the limit, etc. Also check that your program exits with exit code 0! The output of your program was incorrect. This can happen simply because your solution is not correct, but remember that your output must comply exactly with the specifications of the judges. See section 4.3 below for more details. Bummer, you submitted after the contest ended! Your submission is stored but will not be processed anymore. Note that the judges have prepared multiple test files for each problem. DOMjudge will report back the first incorrect result as verdict. 4 DOMjudge team manual Generated: March 21, 2018

3. Clarifications 3 Clarifications All communication with the judges is to be done through clarifications. These can be found in the right column on your team page. Both clarification replies from the judges and requests sent by you are displayed there. There is also a button to submit a new clarification request to the judges; you can associate a specific problem or one of the general categories to a request. This clarification request is only readable for the judges. The judges can answer specifically to your team or send a reply to everyone if it is relevant for all. 4 How are submissions being judged? The DOMjudge contest control system is fully automated. Judging is done in the following way: 4.1 Submitting solutions With the submit program or the web interface (see section 1) you can submit a solution to a problem to the judges. Note that you have to submit the source code of your program (and not a compiled program or the output of your program). On the contest control system your program enters a queue, awaiting compilation, execution and testing on one of the autojudges. 4.2 Compilation Your program will be compiled on an autojudge machine having the same hardware and software as your team machine. All submitted source files will be passed to the compiler which generates a single program to run. For Java and Kotlin the given main class will be checked; for Python 2 and Python 3 we do a syntax check using the py compile module. Use the provided scripts to compile and run your program locally with the same options as on the autojudges. 4.3 Testing After your program has compiled successfully it will be executed and its output compared to the output of the judges. Before comparing the output, the exit status of your program is checked: if your program exits with a non-zero exit code, the result will be a run-error even if the output of the program is correct! There are some restrictions during execution. If your program violates these it will also be aborted with a run-error, see section 4.4. When comparing program output, it has to exactly match to output of the judge, except that some extra whitespace may be ignored. So take care that you follow the output specifications. The judges may accept multiple answers as correct answer (e.g. with floating point answers), the Output section of the problem statement will contain the details in these cases. DOMjudge team manual Generated: March 21, 2018 5

4. How are submissions being judged? 4.4 Restrictions To prevent abuse, keep the contest control system stable and give everyone clear and equal environments, there are some restrictions to which all submissions are subjected: compile time source size memory Compilation of your program may take no longer than 60 seconds. After that, compilation will be aborted and the result will be a compile error. In practice this should never give rise to problems. Should this happen to a normal program, please inform the judges right away. The total amount of source code in a single submission may not exceed 128 kilobytes, otherwise your submission will be rejected. During execution of your program, there are 2048 megabytes of memory available (unless stated otherwise). This is the total amount of memory (including program code, statically and dynamically defined variables, stack, Java VM,... )! If your program tries to use more memory, it will most likely abort, resulting in a run error. number of processes You are not supposed to explicitly create multiple processes (threads). This is to no avail anyway, because your program has exactly 1 processor core fully at its disposal. To increase stability of the contest control system, DOMjudge executes submissions in a sandbox where a maximum of 64 processes can be run simultaneously (including processes that started your program). People who have never programmed with multiple processes (or have never heard of threads ) do not have to worry: a normal program runs in one process. A Code examples Below are a few examples on how to read input and write output for a problem. The examples are solutions for the following problem: the first line of the input contains the number of testcases. Then each testcase consists of a line containing a name (a single word) of at most 99 characters. For each testcase output the string Hello <name>! on a separate line. Sample input and output for this problem: Input Output 3 world Jan SantaClaus Hello world! Hello Jan! Hello SantaClaus! Note that the number 3 on the first line indicates that 3 testcases follow. 6 DOMjudge team manual Generated: March 21, 2018

A. Code examples A solution for this problem in C: #include <stdio.h> int main() { int i, ntests; char name[100]; scanf("%d\n", &ntests); for (i = 0; i < ntests; i++) { scanf("%s\n", name); printf("hello %s!\n", name); A solution in C++: #include <iostream> #include <string> using namespace std; int main() { int ntests; string name; cin >> ntests; for (int i = 0; i < ntests; i++) { cin >> name; cout << "Hello " << name << "!" << endl; DOMjudge team manual Generated: March 21, 2018 7

A. Code examples A solution in Java: import java.util.*; class Main { public static void main(string[] args) { Scanner scanner = new Scanner(System.in); int ntests = scanner.nextint(); for (int i = 0; i < ntests; i++) { String name = scanner.next(); System.out.println("Hello " + name + "!"); A solution in Kotlin: import java.util.* fun main(args: Array<String>) { var scanner = Scanner(System.`in`) val ntests = scanner.nextint() for (i in 1..nTests) { System.`out`.format("Hello %s!%n", scanner.next()) And finally a solution in Python: import sys n = int(input()) for i in range(n): name = sys.stdin.readline().rstrip('\n') print('hello %s!' % (name)) 8 DOMjudge team manual Generated: March 21, 2018