第19回日本情報オリンピック (JOI 2019/2020) 本選概要

2019年12月12日
情報オリンピック日本委員会

更新履歴

目次

日時

2020年2月8日(土) 15:00 ~ 2月9日(日) 16:00

会場

つくば国際会議場(プラクティス・競技など)

住所
〒305-0032 茨城県つくば市竹園2-20-3
電話番号
029-861-0001
URL
https://www.epochal.or.jp/

筑波研修センター(宿泊)

住所
〒305-0005 茨城県つくば市天久保1-13-5
電話番号
029-851-5152
URL
http://www.meikei.or.jp/~center/

本選実施スケジュール

2月8日(土)
受付開始   15:00 (競技用PCには16:00まで触れることができません)
プラクティス(実機練習) 16:00~18:00
講演 18:15~19:00
夕食会 19:00~20:30
宿泊会場へ移動 20:30~21:00 
2月9日(日)
朝食 6:30~7:30
競技会場へ移動 7:45~8:15
開場 8:15
着席 8:30
本選競技 9:00~13:00
昼食 13:30~14:30
暫定得点配布・問題解説 14:30~15:45
「情報科学の達人」の紹介 15:45~16:00
アンケート回答後 解散
※ 解散後に希望者に対し「情報科学の達人」に関する詳しい説明・質疑応答を行います.

本人確認

本選では本人確認を実施します.
本選当日は, 生徒証など写真付の氏名, 生年月日, 学校名が確認できるものを持参してください.

参加申込書・保護者承諾書・振込依頼票

「参加申込書・保護者承諾書・振込依頼票」https://www.ioi-jp.org/joi/2019/2020-ho-form.pdf よりダウンロードしてください. 本ページの内容を保護者と確認の上, 「参加申込書・保護者承諾書・振込依頼票」の必要事項を記入し, 保護者に参加承諾の署名・捺印をしていただき, 1月8日(水)必着で下記宛に郵送してください.

〒108-0075
東京都港区港南 2-4-13 スターゼン品川ビル3階
株式会社ミスターフュージョン 内
特定非営利活動法人 情報オリンピック日本委員会

「参加申込書」中の「本選会場までの交通手段」の必要事項を必ず記入してください. これらの情報に基づき交通費の補助額を計算します. 詳しくは, 「交通費の補助について」をご覧ください. 「振込依頼票」は, 交通費補助金を受け取るためのものです. 適当な振込口座がない場合は, お問い合わせください.

交通費の補助について

自宅最寄り駅から会場最寄り駅までの交通費の全額あるいは一部補助します. 交通費補助額は, 情報オリンピック日本委員会の規定及び国立研究開発法人科学技術振興機構「平成30年度版国際科学技術コンテスト支援事務処理要領」に従い, 情報オリンピック日本委員会が決定します. 購入される切符の経路等によっては, 補助額が購入額に満たない場合があります. ご了承ください.

詳細は「JOI 2019/2020 夏季セミナー・本選・春季トレーニング 参加者交通費補助について で確認をしてください。

宿泊・食事について

大会参加期間中の宿泊及び食事は, 情報オリンピック日本委員会が提供します.

会場へのアクセス

つくば国際会議場へのアクセス
つくば国際会議場の Web ページ https://www.epochal.or.jp/access/index.html を参考にしてください.
筑波研修センターへのアクセス
筑波研修センターのWeb ページ http://www.meikei.or.jp/~center/map02.htm を参考にして下さい.

本選当日の情報オリンピック日本委員会への連絡

本選当日, 情報オリンピック日本委員会に連絡したい場合は, 本委員会事務局
  03-6773-4616
にお電話をください.

本選競技内容

本選競技では, アルゴリズムを設計し, そのアルゴリズムを C, C++ のいずれかのプログラミング言語で実装する課題が出題されます.

どの課題にも実行時の実行時間と使用メモリに制限があります. 課題によってはアルゴリズムの効率が重要となります. 採点用入力データは, 効率が異なる解法を識別できるよう調整されています. どの課題にも, ある程度の効率であって, 正当な解を出力する解法であれば, その課題の制限の中で正解を出力できるような採点用入力データがいくつか用意されています. ですから, 競技参加者が全ての採点用入力データに対して制限内で正解を出力する解法を得られなかった場合でも, 課題に取り組む意味はあります.

第5回~第18回の日本情報オリンピック本選の問題・解説を参照されることをお勧めします.
 https://www.ioi-jp.org/problem_archive.php

第19回日本情報オリンピック 本選競技実施方法概要

競技時間 4 時間
課題数 5 題
配 点 配点は各課題 100 点で, 満点は 500 点となる.
各課題は 1 つまたは複数の小課題からなる. 小課題の配点は問題文中に記載する.
使用できるプログラミング言語 C (C のバージョンは C11), C++ (C++ のバージョンは C++14) (予定)
本選競技システムで使われるコンパイルオプションは, 本選競技の際に配布される Overview Sheet に記載する.
使用できる用品 鉛筆, シャープペン, ボールペン, 消しゴムなどの筆記用具を使用できる. 筆記用具は本委員会では準備しないので持参すること. 計算用紙は本委員会が用意したものを使用すること.
競技参加者は, 競技中に小さなマスコットを机の上に置くことができる.
また, 小さなマスコットを身につけて競技に参加することもできる.
使用できる機器・ソフトウェア 本委員会が用意した機器のみ使用できる. また, 本委員会が事前に準備し使用を許可したソフトウェアのみ使用できる.

本選で使用する予定の機器・環境は以下の通りである. (変更される場合がある. )

ハードウェア
  • 型番: 富士通 LIFEBOOK A576/SX (ノートPC)
  • CPU: Core i3-6006U (2.0GHz)
  • メモリ: 8GB
  • ハードディスク: 500GB
  • ディスプレイ: 15.6型ワイド液晶 (1366×768)
  • マウス: USBレーバーマウス

ソフトウェア (予定)
  • Ubuntu 18.04 LTS 日本語 Remix (ubuntu-ja-18.04.3-desktop-amd64.iso)
    https://www.ubuntulinux.jp/japanese
    Windows 10 Professional (64 bit) 上で動作する仮想マシンで競技を行う
  • gcc/g++, python 2, python 3, ruby, gdb, DDD
  • eclipse-cdt, Geany
  • Gnu Emacs, vim, vim-gnome (gvim), gedit, Kate, KWrite
  • C++ reference (html_book_20181028.zip) (英語)
  • Ubuntu ディストリビューションに含まれる, その他のエディタ
本選競技環境に関する詳細を2020年1月末までに, 本選参加者に本会よりメールで連絡する.
本選競技で使用する Ubuntu は, Windows 10 Professional (64 bit) 上で動作する Oracle VM VirtualBox のゲスト OS である.
https://www.oracle.com/technetwork/jp/server-storage/virtualbox/downloads/index.html
本選実施前に本選競技環境をインストールした仮想マシンを配布する. 本選競技で使用する PC と同スペックの PC を使用することで, 本選競技環境を事前に確認することも可能となる予定である.
解答方法および解答提出方法 課題の趣旨に合致するプログラムを作成し, 解答提出用 Web インタフェースからソースを提出すること. 解答プログラムは, 入力を標準入力から読み込み, 出力を標準出力に出力し, 正常終了すること(0 を返すこと).
提出した解答にはフィードバックが与えられる.
各課題ごとに, 最後の提出から 1 分間は解答を提出することができない.
各課題ごとに, ソースを提出することができる回数は 50 回までである.
フィードバック 競技中に提出されたソースは Overview Sheet に記載されているコンパイルオプションを用いてコンパイルされ, 問題文中の例と, 全ての採点用入力データに対して実行される. その結果がフィードバックとして競技参加者に通知される. 競技参加者は, フィードバックを利用することで, 自分の提出したソースが問題文の仕様をみたしているかどうかを確認することができる. また, その課題に関する自分の得点を競技中に知ることができる.
フィードバックの詳細については, 2月8日(土)のプラクティス(実機練習)の時間に確認することを勧める.
フィードバックが与えられるまでに時間がかかることがある. 競技終了 15 分前までに提出されたソースには競技時間内にフィードバックが与えられる. それ以降に提出されたソースには競技時間内にフィードバックが与えられるとは限らない.
採点方法 予選同様, 採点用入力データに対する出力の正誤で得点を定める.
ただし, 実行時の実行時間と使用メモリに制限がある. 制限は課題ごとに異なり, 競技時に配布される Overview Sheet に記載される.
採点プログラムは, Overview Sheet に記載されているコンパイルオプションを用いて解答プログラムをコンパイルし, 採点用入力データに対して実行する. 時間・メモリの制限を満たして正常終了し, かつ, 出力が正しい場合に, その採点用入力データへの出力は正解となる.
各課題は 1 つまたは複数の小課題からなる. 小課題に関する詳細は問題文中に記載する.
各小課題に対し, いくつかの採点用入力データをセットにして採点を行う. セット内の全ての採点用入力データに正解した場合に限り, その小課題分の得点が与えられる.
ソースを複数回提出した場合は, 提出された全てのソースが採点される. 各小課題に対し, 提出された全てのソースにおけるその小課題の得点の最大値が, その小課題の最終的な得点となる.
各課題の得点は, その課題に含まれる小課題の最終的な得点の合計である.
質問 競技参加者は, 質問がある場合は, 競技開始から 2 時間経過するまで質問票を提出することができる. 質問への回答は「正しい」「正しくない」「ノーコメント」「課題の記述の中に答えはある」「無効」のいずれかである. 競技開始から 2 時間経過後も質問票を提出することはできるが, 競技時間内に回答するとは限らない.
禁止事項
  • 競技前(プラクティスの時間も含む)および競技中に, USB メモリや CD-ROM などの外部メディアや外付けキーボードなどの周辺機器を, 競技用 PC に接続してはならない. また, 競技用 PC には, いかなるデータもコピーしてはならない.
  • 競技中は, 参考書・ノート・辞書などの資料を参照してはならない. また, 本委員会が用意した機器以外の機器(携帯電話・電卓・電子辞書・外付けキーボードなど)を使用してはならない.
  • 競技参加者が提出する解答プログラムは, 実行時に標準入出力以外にアクセスしてはならない. 一時ファイルの作成, ネットワークへのアクセス, 外部プログラムの呼び出しは禁止されている.
  • 競技中は, 競技システムを通じて解答を提出したり提出結果を確認する場合を除き, ネットワークやインターネット上のいかなるコンピュータへのアクセスも試みてはならない. 競技システムを改ざんしたり, セキュリティを侵害することを試みてはならない.
  • 自分自身に割り当てられた競技用 PC とアカウントを使用すること. 自分自身に割り当てられたアカウント以外のアカウントへのアクセス権を得ようと試みてはならない. 自分自身に与えられた競技用 PC 以外のコンピュータにふれてはならない.
  • 競技中は, 本委員会のスタッフを除き, 他の人と連絡を取ってはならない.
  • Windows 上で動作する仮想マシン上で競技を行うこと. 競技中は Windows 環境のデスクトップに戻ってはならない.
その他 競技参加者は, 本選競技終了後に, 会場責任者の許可を得て競技用 PC に USB メモリを接続して, ソースやデータなどを USB メモリにコピーして持ち帰ることができる. 自分が競技中に作成したソースやデータなどを持ち帰りたい人は, USB メモリを持参すること.
本選競技課題および採点用入出力データは, 後日, 本委員会のウェブページで公開する予定である.

本選FAQ

よくある質問とその回答です. 実際にあった質問については, 表現を変更している箇所もあります. 今後, 皆さんから質問がありましたら, その質問と回答を追加していきます.

Q1: どうして本選では参考資料の閲覧や, PC へのデータのコピーが許されないのですか?
A1: 日本情報オリンピックは, 国際大会である国際情報オリンピック IOI の日本代表選手選考を兼ねています. IOI では参考資料の閲覧や PC へのデータのコピーは認められていません. 日本情報オリンピックでは, 選考が進むにつれて徐々に IOI の競技規則・競技環境に近づくよう, 競技規則・競技環境を定めています.
Q2: プラクティス時にスクリプトファイルや C++ のソースコードなどのファイルを作成しておき, 競技中にそれらを使用することはできますか?
A2: できません. プラクティス終了後は, 仮想マシンを新しいものに入れ替えますので, プラクティス時に作成したスクリプトファイルやソースコードを競技中に参照することはできません.
Q3: 言語規定に関してですが, 定められた方法でコンパイルが可能なら, 実装方法などは問わないということでよろしいでしょうか?移植性の無いプログラムを書いても構いませんか?インラインアセンブリを使ってもよいでしょうか?
A3: はい. 採点は, 皆さんが本選で使用する PC と同一機種, 同一環境で行います.
Q4: 競技中に, 機器にあらかじめインストールされている man や info などのドキュメントを参照してよろしいでしょうか?また, STL のドキュメントを参照する手段は用意されていますか?
A4: 本委員会が本選競技のために用意した環境に含まれているドキュメントは, man や info も含めて利用可能です. (本選競技では C++ STL Document の代わりに C++ reference を用意します. (2/8 訂正))
Q5: 本選競技中, 開発を補助するプログラムやスクリプトを適宜作成実行しても構いませんか?
A5: はい.
Q6: 電卓の使用も禁止されていますが, 競技時間内に計算するためのプログラムを作成して計算してもよいでしょうか?
A6: はい. また, もし競技環境に電卓ソフトウェアがインストールされている場合は, 競技中にそれを利用しても構いません.
Q7: 本選競技中に Ubuntu のデスクトップ環境をカスタマイズしても構いませんか.
A7: はい.
Q8: 本選競技の環境はインターネットと接続されていますか?
A8: 接続されていません.
Q9: 競技用 PC に自分の使い慣れているアプリケーションをインストールして, 本選競技で使用することはできますか?
A9: できません. 本選競技では本委員会が用意したソフトウェアのみ使用できます.
Q10: 競技中に手元でコンパイル・実行する場合と, 本選競技システム上で採点のために実行する場合で, プログラムの実行速度が変わる事はありますか?
A10: 採点は, 皆さんが競技で使用する PC と同一機種, 同一環境で行います. 同じコンパイルオプションを使えば, 基本的には実行速度が変わることはありません. 本選競技システムで使われるコンパイルオプションは, 本選競技の際に配布される Overview Sheet に記載されます. 本選競技システムについての詳細は, プラクティスの時間に確認されることをお勧めします.
Q11: 本選競技で使用する OS のデスクトップは標準状態でしょうか. インストール後全てのパッケージをアップデートし最新状態と考えてよろしいでしょうか.
A11: 本選競技では Ubuntu 18.04 LTS の標準状態のデスクトップを本選競技用にカスタマイズしたものを使用します. 多くのパッケージは最新版を使用する予定ですが, 本会では全てのパッケージが最新状態であることは保証しておりません. 本会における動作確認の事情などにより, 最新版でないパッケージを使用する可能性もあります. 本選競技環境に関する詳細は本選初日に行われるプラクティス (実機練習) の時間に確認してください. また, 本選実施前に本選競技環境をインストールした仮想マシンを配布する予定です. 本選競技で使用する PC と同スペックの PC を使用することで, 本選競技環境を事前に確認することも可能となる予定です.
Q12: 小さなマスコットを身につけて本選競技に参加してもよろしいでしょうか.
A12: はい. 小さなマスコットを身につけて本選競技に参加することもできます. 小さなマスコットを身につけて本選競技に参加する場合は, 他の参加者の迷惑にならないように注意してください. 他の参加者の迷惑になると判断された場合は, 持ち込まれた小さなマスコットの使用を禁止することがあります. 不明な場合はプラクティスの時間中に会場責任者に確認してください.
Q13: 本選競技環境におけるコンパイル方法・コンパイルオプションは何でしょうか.
A13: 本選競技で使用できるプログラミング言語は「C (C のバージョンは C11), C++ (C++ のバージョンは C++14)」の予定です. 本選競技システムで使われるコンパイルオプションは, 本選競技の際に配布される Overview Sheet に記載します. 本選競技実施時には, 本選競技システムにおけるコンパイルオプションを, 競技参加者が変更することはできません. 本選競技で使用予定のコンパイルオプションは以下の通りです.

【gcc (C 言語)】 -DEVAL -std=gnu11 -O2 -pipe -static -s -lm
コンパイル方法(例)
$ gcc -DEVAL -std=gnu11 -O2 -pipe -static -s -o test test.c -lm
【g++ (C++) の場合】 -DEVAL -std=gnu++14 -O2 -pipe -static -s
コンパイル方法(例)
$ g++ -DEVAL -std=gnu++14 -O2 -pipe -static -s -o test test.cpp

・コンパイルオプション(補足)
-std=gnu11
gcc において C11 に準拠した言語仕様でコンパイルする (GNU拡張を有効にする).

-std=gnu++14
g++ において C++14 に準拠した言語仕様でコンパイルする (GNU拡張を有効にする).

-O2
コンパイルの最適化に関するオプション. このオプションの有無によって, プログラムの実行速度が大幅に変わることがある. 手元でコンパイルしてテスト実行する際には, このオプションを常に付けることを勧める.

-lm
本選競技で使用する gcc では, 数学に関する標準 C ライブラリ (math.h) に含まれている関数 (sin, cos など) を使う場合にコンパイルオプション -lm が必要. (本選競技で使用する g++ では, コンパイルオプション -lm はデフォルトのため, このオプションは不要.)

-DEVAL
マクロ名 EVAL を 1 と定めるコンパイルオプション. ソースの先頭に #define EVAL 1 と記述することと同等の意味を持つ. マクロ名 EVAL を用いたソースを書くことで, 手元でのコンパイル結果と本選競技システム上のコンパイル結果を意図的に変えることができる. 例えば, ソース中に
#ifndef EVAL
printf("debug:%d\n",i);
#endif
と書くことで, 手元の実行時にはデバッグ情報を出力して, 本選競技システム上での実行時にはデバッグ情報を出力しない, といったことも可能となる.

-static
リンカに対するオプション. リンク時に実行バイナリにライブラリが組み込まれる. このオプションの有無によって, プログラムの実行速度が大幅に変わることは基本的にない. 本選競技システムと同一条件でコンパイル・テスト実行するときは, このオプションを付けることを勧める.

-pipe
コンパイラの実行方法に対するオプション. コンパイル時に一時ファイルを使わずパイプライン処理を行う. このオプションの有無によって, プログラムの実行速度が変わることは基本的にない.

-s
リンカに対するオプション. リンク時に実行バイナリからシンボルテーブルと再配置情報を削除する. このオプションの有無によって, プログラムの実行速度が変わることは基本的にない.

詳細は gcc, g++ のマニュアル https://gcc.gnu.org/onlinedocs/(英語サイト)を参照.

オープンコンテスト・本選問題解説の公開について

オープンコンテスト
本選競技と同じ時間帯に, 同じ課題を使ったオープンコンテストをオンラインで行います. オープンコンテストにはどなたでも参加できます.
オープンコンテストに用いる競技システムの仕様は, 本選競技で用いる競技システムと同一ではありません.
詳細はオープンコンテストのページをご覧ください.
本選問題解説の公開
本選参加者以外の方も, 会場で行われる本選問題解説に参加することができます.
会場での本選問題解説に参加を希望される方は, 氏名・所属(学生の場合は学年)・連絡先メールアドレスを明記の上, 件名を「本選問題解説参加希望」として, 2月9日(日)の正午までに情報オリンピック日本委員会 (info@ioi-jp.org) までメールでお問い合わせください.
本選問題解説で使用した解説スライドは, 後日, 本委員会のウェブページで公開する予定です.

付き添い教員研修会

2月9日(日) 10:00~12:00 に, 本選競技と併行して, 付き添いで来場された学校の先生方との教員研修会を開催予定です.

JOI 2019/2020 本選併催 教員研修会のご案内

日本情報オリンピックは個人戦ですので, 本選参加に教員の付き添いは必要ありません. 所属校の教員が付き添いを希望する場合も, 競技中に競技会場への入室はできません.

個人情報の扱いについて

個人情報の扱いについては, 情報オリンピック日本委員会の「個人情報保護方針」をご覧ください.