第26回大会 競技部門

競技サーバ リクエスト仕様書

第26回大会の競技サーバでは、問題の取得と回答の投稿のために、 次の3つのリクエストをHTTPサーバで提供します。

基本的には、回答投稿フォームにWebブラウザからアクセスすることで、 問題の取得と回答の提出が行えます。

回答提出プログラムを自作する場合は、以下の仕様に従って実装してください。


サーバ接続情報

本選時

本選時は、競技会場のプライベートネットワーク内で競技を行います。

本選時のサーバへの接続情報は次の通りとなります。 (なお、運営上の都合により、 サーバホスト等に変更が加わる場合がありますので、 修正できるように対応してください。)

公開テストサーバ

本年度は本番と同様のサーバをインターネット上で公開しています。 こちらの環境で事前にテストを行ってください。

なお、公開テストサーバのサンプル問題は募集要項のサンプル問題と同様のデータです。 http://www.procon.gr.jp/modules/procon26/item.php?itemid=101


GET /

こちらのURLから以下の情報が閲覧可能です。

リクエストパラメータ

リクエストURL

ブラウザから以下のURLでアクセスできます。

http://サーバホスト/?token=チームトークン

GET /quest{num}.txt

こちらのURLから問題ファイルを取得できます。

curlでのリクエストサンプル

フォーマット

curl 'http://サーバホスト/quest1.txt?token=チームトークン'

実行例

curl 'http://testform26.procon-online.net/quest1.txt?token=0123456789abcdef'

POST /answer

こちらのURLから回答を投稿できます。

curlでのリクエストサンプル

フォーマット

curl 'http://サーバホスト/answer' \
--form-string 'token=チームトークン' \
-F 'answer=@回答ファイル名'

実行例

curl 'http://testform26.procon-online.net/answer' \
--form-string 'token=0123456789abcdef' \
-F 'answer=@101_answer1.txt'

HTMLフォームでのサンプル

<!DOCTYPE html>
<html>
  <head>
  <title>Sample uploader</title>
  </head>
  <body>
  <h1>Sample uploader</h1>
  <form action="http://サーバホスト/answer" enctype="multipart/form-data" method="post">
    <label for="token">Token: </label><input name="token" type="text"/><br>
    <label for="answer">Answer: </label><input name="answer" type="file" /><br>
    <input type="submit" value="Upload answer" />
  </form>
  </body>
</html>