Directory structure

These examples are for the latest version of the spec, 2023-07-draft.

<short_name>/
  problem.yaml - problem configuration file
  statement/
    problem.en.tex - English problem statement as LaTeX
    problem.sv.md - Swedish problem statement as Markdown
    problem.nl.pdf - Dutch problem statement as PDF
    - any files that problem.xy.{tex,md,pdf} needs to include, e.g. images
  attachments/
    - public files available to contestants
  solution/
    solution.en.tex - English problem solution as LaTeX
    solution.sv.md - Swedish problem solution as Markdown
    solution.nl.pdf - Dutch problem solution as PDF
    - any files that solution.xy.{tex,md,pdf} needs to include, e.g. images
  data/
    sample/
      *.in - sample input files
      *.ans - answer files
      *.out - sample output files
      *.interaction - sample interaction protocol files
      *.args - optional command-line arguments
      *.files/
        - any files that should be available to the program when running the current testcase
    secret/(optional_group)/
      *.in - input files
      *.ans - answer files
      *.hint - optional hint for the team
      *.desc - optional data description
      *.{jpg,png,svg} - visualization of the testcase, at most one per testcase
      *.args - optional command-line arguments
      *.files/
        - any files that should be available to the program when running the current testcase
  generators/
    - any generator scripts that were used to generate testcases
  include/
    <language>/
      - any files that should be included with all submissions in <language>
    default/
      - any files that should be included with all submissions in any other language
  submissions/
    submissions.yaml - sample submissions configuration file
    accepted/
      - a file/directory for each submission with verdict AC for all testcases (at least one required)
    rejected /
      - a file/directory for each submission with final verdict other than AC
    wrong_answer/
      - a file/directory for each submission with verdict WA for some testcase
    time_limit_exceeded/
      - a file/directory for each submission with verdict TLE for some testcase
    run_time_error/
      - a file/directory for each submission with verdict RTE for some testcase
    brute_force/
      - a file/directory for each submission with either verdict RTE or TLE for some testcase
  input_validators/
    - a single output validator, either as a .viva file, a .ctd file, or a program.
  input_visualizer/
    - any tools that were used to generate testcases illustrations
  output_validator/
    - a single output validator program.
  output_visualizer/
    - a single output visualizer program.

Example

This is a sample list of directories/files for a problem named heightprofile:

heightprofile
├── problem.yaml
├── statement
│   ├── bike.eps
│   ├── problem.en.tex
│   ├── profile.asy
│   └── profile.pdf
├── data
│   ├── sample
│   │   ├── 1.ans
│   │   ├── 1.in
│   │   ├── 1.png
│   │   ├── 2.ans
│   │   ├── 2.in
│   │   └── 2.png
│   ├── secret
│   │   ├── 01.ans
│   │   ├── 01.desc
│   │   ├── 01.in
│   │   ├── 01.png
│   │   ├── 02.ans
│   │   ├── 02.in
│   │   ├── 02.png
│   │   └── ...
├── input_validators
│   ├── input_validator
│   │   ├── input_validator.cpp
│   │   └── validation.h
│   ├── profile.ctd
│   └── validate.py
├── output_validator
│   └── validate.ctd
└── submissions
    ├── accepted
    │   ├── alex.java
    │   ├── paul.cpp
    │   ├── ragnar.cpp
    │   └── tobi.java
    ├── time_limit_exceeded
    │   ├── jeroen_n2k.java
    │   ├── lukas_n2k.cc
    │   ├── lukas_n2k_sse.cc
    │   ├── lukas_n2k_v2.cc
    │   └── lukas_n2k_v2_sse.cc
    └── wrong_answer
        ├── jeroen_parsingerror.java
        ├── paul-unstable-sort.cpp
        ├── ragnar-2.cpp
        ├── ragnar-4.cpp
        ├── ragnar.cpp
        └── tobi.cpp