Problem Format

From PC2wiki
Jump to: navigation, search

This article describes the deliverables (files) needed to define a contest problem.

Problem Author deliverables

Each problem author needs to create the following:

  1. a directory "problem short name" to hold the problem.yaml and other data files.
  2. a problem.yaml
  3. judge input and answer files in the appropriate directories (see Data File Locations section for details)

Sample problem.yaml

# Problem configuration
source: ICPC Mid-Atlantic Regional Contest
author: John von Judge 
rights_owner: ICPC

name: Sumit Sample Problem

The source, author, and rights_owner are optional.

name: is followed by the title of the problem. The name of the problem can also be found in the problem.tex file.

Data File Locations

Each problem author needs to create a problem.yaml file and the judge's data and answer files.

Below is an example of where pc2 expects data files to be located. This example uses the problem short name 'sumit'.

The input data files and expected output files (answer files) are created in the data/secret directory.

Example file locations are:

 sumit/problem.yaml
 sumit/data/secret/sumit.ans
 sumit/data/secret/sumit.in

Requirements:

  • Problem input data files end with the extension .in
  • Judge's answer files end with the extension .ans
  • For every .in file there must be an .ans file with the same name.
  • data files must be in the data/secret directory

Solution source locations

These are examples of optional source code solutions to a problem.

sumit/submissions/accepted/Sumit.java
sumit/submissions/accepted/sumit.c
sumit/submissions/accepted/sumit.cpp

Sample data file location

This sample data is for the teams, usually it is the same data that is printed/listed in the problem description.

sumit/data/sample/sample.in

Examples

In the 9.3 distribution there are examples of problem.yaml(s) and problem files under the samps/contests directory.

Here is the example of the files under samps/contests/sumithello/.

hello/data/secret/hello.ans
hello/data/secret/hello.in
hello/problem_statement/problem.tex
hello/problem.yaml
sumit/data/secret/sumit.ans
sumit/data/secret/sumit.in
sumit/problem_statement/problem.tex
sumit/problem.yaml

Here is an example with multiple data sets

squares/data/secret/squares-test1.ans
squares/data/secret/squares-test1.in
squares/data/secret/squares-test2.ans
squares/data/secret/squares-test2.in
squares/data/secret/squares-test3.ans
squares/data/secret/squares-test3.in
squares/data/secret/squares-test4.ans
squares/data/secret/squares-test4.in
squares/data/secret/squares-test5.ans
squares/data/secret/squares-test5.in
squares/problem.yaml

See Also