Edited at

AtCoder Tips ~コンテストに参加する前に確認しよう!~ (AtCoderのシステム、ルール、マナー等について)

普通にAtCoderを利用している上ではなかなか気づきにくいけど、重要なこと・知っていると良いことを挙げてみたいと思います。

AtCoderのコンテストに出てみたい人、AtCoderのコンテストに数回参加したけどまだ慣れてないかなって思っている人向けです。

「AtCoder」って何?って人は、まずこの記事を読んで、AtCoderのユーザー登録をしましょう。

AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~


おことわり


  • 問題の解き方やレートを上げるコツ等ではなく、AtCoderのシステム、ルール、マナー等についての話になります。慣れている人には知っていることばかりだと思うので、ご了承ください。

  • 書いている内容は私の見た範囲でのAtCoderユーザおよび運営の方々の意見を参考にしていますが、全て私個人の意見であることをご理解ください。

  • 1度もコンテストに参加したことがない人にとっては分かりにくいところも多いと思います。コンテストを経験した後に、読み返してみてください。

  • 追記したほうが良い内容があればコメント等ください。「こういうところがよく分からない!」などでもOKです。記事の方向がブレない範囲であれば、記事にも反映します。

  • この記事の「現在」は、今のところ2018年8月くらいを指します。


ベータ版を使おう 通常版を使おう

AtCoderにはかつて通常版とベータ版の二つが存在していましたが、2018/12/17頃からは一本化され、ベータ版にアクセスしても通常版に飛ばされるようになりました。そのため

にアクセスすればOKです。また、ベータ版をブックマークなどしていても、通常版に飛ばされるので気にせずアクセスすることができます。

AtCoderには通常版とベータ版、2種類のサイトが用意されています。コンテストはどちらからでも参加できますが、圧倒的にベータ版を利用するのがオススメです。

オンラインゲームやソフトウェアなどで「ベータ版」というと、「新機能が載っている」「その代わり安定度は低い、バグがあるかもしれない」といったイメージを持つと思いますが、少なくとも現在のAtCoderではむしろベータ版のほうが安定稼働しているように思います。

アカウントは共通なので、この機会に是非乗り換えてみてください。ただしログインはやり直す必要があります。

現在ベータ版だけにある便利機能として、以下のようなものがあります。他にも色々あります。


  • 問題ページからそのままコード提出ができる

  • 解答提出後、ジャッジの経過の表示が自動で更新される

  • 順位表で色々なフィルタリング(表示の絞り込み)ができる

特に上2つはとても便利だと思います。これに慣れるともう通常版には戻れません。是非ベータ版を使いましょう。


コンテスト中のネタバレは禁止!

これ、とても重要です。AtCoderサイトではここに書いてありますが、まあ読みませんよね…

公式でも「ネタバレ」と呼んでいるのでこの呼び方にしますが、これは

Twitterやチャットなどで、コンテスト終了前に、問題の解法やヒントに繋がってしまう情報を言う

ことを指しています。これが他の人のヒントになってしまうと、公平なコンテストにならないですよね?

「○○アルゴリズムで解いた!」というのはもちろんダメですが、ヒントに繋がる情報というのは実はとても多いです。


  • ○○アルゴリズムで解けそうな気がした(不確実な情報でもヒントになってしまう)

  • WAした(間違えやすい、例外扱いしないといけないような特殊なケースがありそう、というヒントになってしまう)

  • TLEした(制限時間に気をつけて解法を組み立てないとダメそう、というヒントになってしまう)

  • C問題よりD問題のほうが簡単だった(解く問題についてのヒントになってしまう)

こういった情報、本当は全部ダメです。

一応、AtCoderのサイトで全員が共通に閲覧可能な情報(順位表など)であればOKという線引きが何となくあったり、慣れている人は(ときに冗談半分で)グレーゾーンギリギリを攻めるようなツイートをしていますが、慣れないうちはコンテストが終わるまで、極力コンテストの情報を書かないようにするというのが間違いがないと思います。

コンテストについて色々なことを書きたくなる、共有したくなる気持ちはとても分かるので、是非コンテストが終わってからいっぱい感想を書きましょう!

もちろん、Twitterなどのインターネット上だけではなく、知り合いや友達と個人的に情報を共有するのも禁止です。これは他の人からは確かめようがないのですが、「マナー」として守ってほしいです。

(追記)コンテスト中の言及OK/NGの線引きについて、AtCoder公式からの記事が発信されました。是非ご確認ください。


「質問」を確認しよう

コンテスト参加の流れとして、基本的には


  • 問題を見る

  • 自分のPCのエディタでコードを書く

  • コードを提出する

  • 結果を確認する

の繰り返しになると思います。あとは慣れてくると「順位表」もたまに見るかもしれません。

この他に、見ておくといいページがあります。それは「質問」です。

ここは問題やコンテストについての質問をするページですが、もちろん解法を教えてくれるわけではありません。問題の記述が曖昧なところをハッキリさせるための質問をしたり、問題のミスを指摘したりするのが主な使い方です。1

質問をすることは、ある程度コンテストに慣れない限りほとんどないと思います。私も今までに質問を書いたのは、問題文のミスを1回指摘した時だけでした。ただ、他の人がした質問を確認することはとても大事です。


  • 出題ミスの訂正

  • コンテストのトラブル情報


    • ジャッジが正しく動作していない、など



  • コンテストに関わる重要な情報


    • コンテストが「レート変動なし」扱いに変更された、など



こういった重要な情報が掲載されています。

ベータ版を利用している場合は、新着質問があるとタブの「質問」と書いてあるところに数字が出るので多少は分かりやすいです。ただ個人的にはそれでも分かりにくいと思います…「1分に1回確認しよう!」みたいな極端な話ではないですが、「質問タブに数字が出ていることを見つけたら必ず読もう!」ということをオススメします。

DioTTT4VQAIx6cB2.jpg

↑こんなのが出ます。


何かおかしいなと思ったら

AtCoderのシステム動作は比較的安定していますが、それでも様々なトラブルは起こるものです。直近どんなトラブルがあったか、そしてとりあえずどう対処すればいいのかを紹介します。(トラブル事例を晒すわけではなく、知識として持っておいたほうが良いと思うので…)


共通内容

全員に影響するようなトラブルが起こった際には、慣れている人が上記の「質問」で運営さんに連絡をしてくれていることが多いです。「質問」を確認してみましょう。

あとはAtCoder社長さんのTwitter、その他コンテスト参加者さんのTwitterなどで情報が流れることもあり2、実はこれが一番情報としては早い気もしていますが、確実ではないのであくまで選択肢の1つとして確認してみてください。


ジャッジ詰まり

解答として提出したコードは、その判定をするために順番待ちをします。他の人がたくさんコードを提出している時間帯だと、実行されるまで数秒の時間がかかります。

ただあまりにもキャパオーバーになってしまうと、5~10分、時にはそれ以上の時間がかかり、ジャッジ待ち「WJ」の表示のまま動かないこともあります。そういったときは仕方ないので、他の問題に取り掛かってしまうのがオススメです。

コンテストの順位に影響する解答時刻は、正解の場合は「提出をした時刻」が基準になるので、ジャッジが待たされても不利になることはありません。ただこの解答が不正解だと、結果が返ってくるのが遅かったぶん、修正が遅れて正解時刻も遅くなってしまう…という可能性はあります。残念ながら、対処する方法はあまりありません…


ジャッジミス

たまにジャッジシステムに不備があって、正解なのに不正解と判定されたり、(見たことないですが)その逆が起こる可能性があります。

もちろんテストケースやジャッジの中身についてはコンテスト中には分からないので、ジャッジミスだと判断することは難しいです。

ただ、1つの指針として「問題ページ中の入力例・出力例(サンプル)は、ほとんどの場合ジャッジにも含まれている」ということが言えます。つまり、サンプルが合っているのにジャッジが全ケースWAのような場合には、ジャッジミスを疑う余地があります。

「質問」などでジャッジミスが告知された場合は、後で再ジャッジが行われて(正解であれば)最初の提出時刻で正解した扱いになるので、再ジャッジを待ちつつ他の問題を解きましょう。

そうでない場合は、「ジャッジミスか?」と思うようなときでも、実際には自分のコードの間違いである可能性のほうがはるかに高いので、あくまで「そういう可能性もある」という程度で頭の片隅に入れておいてください。


最後に

結構長くなりましたね…読んでいただきありがとうございます。

今回書いた内容は、最近Twitterで話題に挙がる頻度の高い話題や、最近のコンテストで実際に起こったことです。

AtCoderやその他の競技プログラミングに慣れている人は知っていても、AtCoderを普通に始めるとこういった内容は知る機会がなかなかないです。それは決して「知らないのが悪い」のではなく、知っている人が情報発信して広めていくべきだと私は思っています。この記事はその一環です。

最後に大事なことを繰り返して終わります。これからも、良いAtCoderライフを!



  • ベータ版を使おう! 通常版を使おう!

  • コンテスト中のネタバレは禁止!

  • 「質問」タブに数字が出ていたら確認しよう!





  1. 英語ではClarification(明確化)、略してClarと書いたりします。分からないことを聞くのではなく、曖昧なものを明確化する、というほうが近いです。 



  2. これが「ネタバレ」なのかどうか、という話は私個人としては気になっていて、無制限に情報を書いていいというわけでもないと思うのですが、システムトラブル等についてはOKという何となくの認識があるようには思います。「ネタバレ」については、本当に線引きがハッキリしていないのです。