JOI logo

第14回日本情報オリンピック (JOI 2014/2015) 予選競技規則

2014年10月6日
情報オリンピック日本委員会

・「質問とその回答」に Q&A を追加しました. (2014.11.1)
・JOI 2014/2015 予選競技規則を公表しました. (2014.10.6)

予選競技注意事項       予選競技規則       質問とその回答
     

よくある質問とその回答です.実際にあった質問については,公開に適するよう表現を修正しています.
質問とその回答へ

予選競技注意事項
概要  日本情報オリンピックは個人戦である. 予選競技では 6 問の問題が出題され,それぞれの問題に対するプログラムを作成する. ウェブブラウザで My Page にログインし,「予選競技」ページへ進む. ウェブブラウザで問題を閲覧し,解答を提出する.
質問・問い合わせ  質問や問い合わせは info@ioi-jp.org 宛の電子メールで行うこと. ただし,予選競技時間中に質問に回答することはない. また,電話などその他の方法での質問は受け付けない.
会場  予選では特定の会場は設けない. 自宅や学校などで,自分の PC あるいは学校の PC などを使って競技に参加すること.
ウェブブラウザ  予選で使用予定の PC とブラウザの表示と動作を,予選練習時 (次項「予選練習」を参照) に確認すること. 必要に応じて,支障なく競技に参加できるブラウザを予選競技開始までにインストールしておくこと.
予選練習  12月1日(月)から12月14日(日)11:00 (競技開始 2 時間前) まで, My Page にログインすることで予選練習に参加できる. 予選練習では,問題の表示や解答の提出が正常に行えるか確認できる. また,解答の形式が適切か確認できる.


第14回日本情報オリンピック (JOI 2014/2015) 予選競技規則
不正禁止  本規則を遵守すること. 規則を破った場合は失格となる. 特に,競技中に第三者の助けを借りたり,他の参加者の助けとなる行為は禁止されていることに注意すること.
競技時間  3時間 (2014年12月14日(日) 13:00〜16:00)
問題数  6 問
配 点  配点は全問一律で各問 100 点であり,満点は 600 点となる. また,問題ごとに採点用入力データが 5 個あり,配点は入力データ 1 個につき 20 点である. 採点用入力データについては「解答方法」を参照のこと.
解答方法
  • 各問題には 5 個の採点用入力データが与えられる. 各問題について,問題文の趣旨に合致するプログラムを作成し,5 個の採点用入力データに対して実行し,プログラムのソースコードと採点用入力データに対する実行結果を提出すること.
  • プログラムのソースコードとして問題ごとに 1 つのファイルを提出すること. もし,1 つの問題に複数のソースコードがある場合は,1 つの書庫ファイルにまとめて提出する こと. この場合,書庫ファイルの形式は,zip 形式や lzh 形式等,任意の形式を用いて構わない.
  • 1 つの問題の各採点用入力データに対して,別々のプログラムを書いてはいけない.
  • 採点は 5 個の採点用入力データに対する出力だけを対象に行うが,採点用入力データだけに対して動作するのではなく,問題文の趣旨に合致する動作を行うプログラムの作成を目指すこと.例えば,他のプログラムで採点用入力データに対する出力を計算しておき,その出力を表示するだけのプログラムを提出することは,問題文の趣旨に合致しない.
  • 一方,採点用入力データの中には,プログラムを工夫しないと短時間で実行が終わらないようなデータが含まれていることがある.そのため,一部の採点用入力データについてのみ出力を得ることができた場合は,出力が得られた分だけを提出すればよい.その出力が正しければ,その分は得点となる.
  • 問題ごとに異なるプログラミング言語を使用して解答することも可能である.例えば,問題 1 のプログラムを C++ で書き問題 2 のプログラムを Java で書くなど,問題ごとに異なるプログラミング言語を使うこともできる.
プログラムの
入出力方法
 プログラムが採点用入力データを読み込んだりそれに対する出力データを書き出したりする方法は問わない. 例えば,ファイル名を実行時に別途指定できるようにプログラムを書いても良いし,ファイル名を固定してプログラムを書いておいて実行時にデータのファイル名を変えることで対応しても良い. また,標準入出力を使うプログラムを書いておいて, 入出力をリダイレクトしたりコピーアンドペーストしたりしても良い (その場合,余計な文字や行が含まれないよう注意すること. 「出力ファイルの形式」を参照のこと.).
入力データの形式  与えられる採点用入力データの形式は以下の通りである.
  • 入力データの改行コードは, CR+LF である.
  • 複数の項目を含む行では,項目は 1 つの「空白」で区切られている. ここで,「空白」とは半角空白のことであり,全角空白やタブは「空白」ではない. 1 つ目の項目の前や最後の項目の後に「空白」はない.
  • 項目は整数または文字列である.
解答の提出  各問題の解答アップロード機能付きページには,
  • 問題文
  • 5 個の採点用入力データ
  • 解答アップロード欄
が含まれている. 1 つのソースファイル,および,5 つの入力データに対する出力をそれぞれ 1 つのファイルにし, 解答アップロード欄から提出せよ. 解答は競技時間中,何度でも提出し直すことが可能である. ただし,予選競技終了時間直前は,アップロードが集中して時間がかかる可能性がある. 早めにアップロードするとともに,無用なアップロードを避けること.
提出するファイル
ファイル名について
 提出するプログラムのソースファイルおよび出力データファイルの名前に使える文字は, ASCIIコードに含まれる文字のうち次に掲げる文字のみである.
   0 1 2 3 4 5 6 7 8 9
   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
   a b c d e f g h i j k l m n o p q r s t u v w x y z
   . - _
最後の 3 文字は,ピリオドとハイフンとアンダースコアである. ここにない文字は空白も含めて使用できない. (これはファイル名に対する制約であることに注意.)
出力データファイルの内容について
出力データのファイル内容には,ASCIIコードに含まれる文字だけが使用できる.
ソースファイルのサイズについて
提出するプログラムのソースファイルのサイズは 100KB 未満でなければならない.
出力ファイルの形式
  • 提出された出力ファイルに,問題文の指示にない文字・記号が含まれている場合は不正解とする.
  • 出力ファイルの改行コードは,CR+LF, LF, CR のいずれでもよい.
  • 提出された出力ファイルに含まれる改行コードの個数が,問題中の「出力」の項に指定された行数よりも多い場合は不正解とする.
  • 提出された出力ファイルの各行に含まれる項目数が,問題中の「出力」の項に指定されたその行の項目数と異なる場合は不正解とする.
  • 複数の項目を含む行では,項目を 1 つの「空白」で区切ること. また,1 つ目の項目の前や最後の項目の後に「空白」を挿入してはならない. これらに反する出力ファイルは不正解とする. ここで,「空白」とは半角空白のことであり,全角空白やタブは「空白」ではない.
  • 項目は整数または文字列である.
  • 項目が整数の場合,次のように出力(表記)すること.
    正整数
    正整数は, 数字(0 から 9 まで)を用い十進法で表すこと. 先頭が 0 であってはならないし,符号や小数点をつけてはならない.
        良い例: 123
        悪い例: +123    123.0    0123
    零は 0 で表すこと.
        悪い例: +0    -0    0.0    00
    負整数
    負整数は, 負号(-)の後に 1 個以上の数字を並べ十進法で表すこと. 符号の直後の数字は 0 であってはならない.
        良い例: -123
        悪い例: -123.0    -0123
  • 項目が文字列の場合,1 個以上の文字の並びとして出力すること.
  • 提出する出力ファイルの最後の改行の有無は正誤に影響しない.改行コードの個数が問題中の「出力」の項に指定された行数よりも多い場合は内容にかかわらず不正解となるが,改行コードの個数が問題中の「出力」の項に指定された行数と同じか 1 つ少ない場合は,正否内容によって決まる.
採点方法
  • ソースファイルが提出されていない問題は, 提出された出力ファイルの内容に関わらず 0 点となる.
  • 各採点用入力データに対して,提出された出力ファイルが,その問題の「出力」の項の指示および「出力ファイルの形式」の指示に合致している場合に正解となる.
  • 競技時間中に同じ解答アップロード欄に複数回提出した場合,採点は最後に提出したファイルにのみ基づき行われる.
  • ある採点用入力データに対して,提出された出力ファイルの内容が提出された(ソースコードに対応する)プログラムの出力でないことが判明した場合は,その採点用入力データに対する得点は 0 点となる.
  • 提出された(ソースコードに対応する)プログラムが「解答方法」に反すると情報オリンピック日本委員会が判定した場合は,その問題に対する得点が 0 点となることがある.
第三者との
やり取りの禁止
 予選競技中,競技参加者はいかなる第三者とも,いかなる方法でも相談や情報のやり取りをしてはならない.そのため,競技中は,例えば,Twitter,Facebook,ブログなどへの書き込み,SNS の利用,Skype,LINE,チャットの利用,電子メールの送受信 (情報オリンピック日本委員会とのやりとりを除く) は許されない.
使用できる
プログラミング言語
 使用できる言語に制限はない. ただし,「使用禁止のアプリケーション」の項を参照のこと.
使用できる
機種・OS
 インターネットに接続でき予選競技実施システムを利用できるウェブブラウザが競技開始前にインストールされている PC (personal use computer) であれば機種や OS に制限はない.
使用できるPC
の台数
 予選競技に使用できる PC は 1 台だけである.
 ただし,学校の設備を利用して参加する場合で,さらに,開発環境がインストールされた PC (以下この項において「開発用 PC」と呼ぶ) をインターネットに接続することができない場合は,開発用 PC とは別の PC (以下この項において「インターネット接続用 PC」と呼ぶ) から問題文をダウンロードしたり,解答ファイルをアップロードすることは許される. この場合,開発用 PC とインターネット接続用 PC の間で競技参加に必要なデータをコピーするために限り,メディアの利用を許可する. この場合であっても,開発用 PC を複数の競技参加者が共用することはもとより,インターネット接続用 PC を複数の競技参加者が共用することも許されない (「PC 共用の禁止」の項を参照のこと).
PC 共用の禁止  予選競技中,複数の競技参加者が 1 台の PC を共用することを禁止する. また,競技に使用する PC を競技参加者以外の第三者が操作することも禁止する.
ネットワークへの
アクセスについて
 予選競技中,競技参加者は本競技規則の他の項目に抵触しない範囲でネットワークにアクセスすることができる.
 例えば,問題の閲覧,結果の提出,このページ (注意事項と競技規則) の閲覧,情報オリンピック日本委員会との通信,開発環境に付属するオンラインマニュアルの利用,インターネット上で公開されている情報を検索して競技に利用することは,許される.
 ただし,予選競技中に Twitter,Facebook,ブログ,SNS 等を用いて情報発信したり,チャット,Skype,LINE,メールやインターネットの質問サイト等を用いて第三者の助けを借りることは,「第三者とのやり取りの禁止」に抵触するので,許されない.
使用禁止の
アプリケーション
 開発環境,ウェブブラウザ,参考資料を閲覧するために必要なアプリケーション,情報オリンピック日本委員会との通信のために使用するメーラ以外のアプリケーションの使用を禁止する. ただし,Mathematica, Maple, MuPad, Maxima などの数式処理ソフト,および,Excel などの表計算ソフトは開発環境であると解釈し,これらを使用して解答を作成することを認める.
ライブラリの利用  予選競技では,プログラム開発環境に付随しているライブラリや,インターネット上で公開されている外部ライブラリを使用することができる.
参考資料の閲覧  予選競技中に参考資料を閲覧することは許される. 具体的には,
  • 競技中に占用できる参考書等の書籍
  • 予選競技に使用するプログラム開発環境に付随しているマニュアルやヘルプ(オンラインマニュアルやオンラインヘルプを含む)
  • 予選競技前や予選競技中に検索して入手した資料やサンプルプログラム
を使用して競技に参加することは許される.また,
  • 入手したサンプルプログラム等をコピーアンドペースト等で解答プログラムに活用すること
  • ブログやインターネットの質問サイトに書かれた内容を,検索して利用すること
も許される.
 ただし,予選競技開始後でかつ予選競技終了前にブログやインターネットの質問サイトに書き込みを行うことは,「第三者とのやり取りの禁止」に抵触するので,許されない.


質問とその回答
Q: 提出する出力ファイルの最後の改行の有無は正誤に影響しますか?
A: 影響しません. 「出力ファイルの形式」において「提出された出力ファイルに含まれる改行コードの個数が, 問題中の「出力」の項に指定された行数よりも多い場合は不正解とする.」と規定されています. 改行コードの個数が問題中の「出力」の項に指定された行数よりも多い場合は内容にかかわらず不正解となりますが,改行コードの個数が問題中の「出力」の項に指定された行数と同じか 1 つ少ない場合は,正否内容によって決まります.
Q: ソースコードを提出する際,統合開発環境のプロジェクトファイルを圧縮するのには,どのような圧縮形式を用いれば良いのでしょうか?
A: 特に,書庫ファイルの形式に制約はありません. ただし,「提出するファイル」に「提出できるファイルのサイズは100KB未満」という制約があることにご注意ください. また,お使いの統合開発環境にソースコードを 1 つのテキストファイルにまとめて保存する機能がある場合は,そのような機能を使うことをお勧めします.
Q: 統合開発環境を使用して問題を解こうと思っています.プロジェクトディレクトリのどのファイルを提出すれば良いのでしょうか?
A: 「解答方法」には,「プログラムのソースコードとして問題ごとに 1 つのファイルを提出すること.もし,1 つの問題に複数のソースコードがある場合は,1 つの書庫ファイルにまとめて提出すること.この場合,書庫ファイルの形式は,zip 形式や lzh 形式等,任意の形式を用いて構わない.」と定められています.
競技中に作成したプログラムのソースコードを提出してください.開発環境によっては,複数のファイルをソースコードとして作成することもあるかもしれません.その場合は,ソースコードとして作成した全てのファイルを 1 つの書庫ファイルにまとめて提出してください.
もし,お使いの開発環境にソースコードを1つのファイルにまとめる機能がある場合は,それを使っていただいても構いません.
プロジェクトごと圧縮してアップロードすることも可能ですが,提出できるファイルのサイズは 100 KB未満となっていますのでご注意ください.
あらかじめ,ソースコードの提出方法を予選練習で確認されることをお勧めします.
Q: インライン関数は使用可能でしょうか?
A: はい.使用可能です.
Q: 問題 1 のプログラムを C++ で書き問題 2 のプログラムを Java で書くなど,問題ごとに異なるプログラミング言語を使ってもいいですか?
A: はい.問題ごとに異なるプログラミング言語を使用して解答することは可能です.