2015年4月6日追記
H問題解説書きました → CODE THANKS FESTIVAL A日程H問題解説 – ローリングハッシュについて
こんにちは。
コンちゃんこと佐々木です。
エクストリームスポーツ「除雪」シーズンの秋田からお届けします。
CODE THANKS FESTIVAL 2014 A日程オンサイトに行ってきました。
A日程が12月7日(日)、B日程が12月14日(日)で、どちらか一方に参加できます。
__________ CODE THANKS FESTIVAL 2014 とは? __________
・リクルート社主催、AtCoder社運営サポートの、学生(高校生以下除く)向けお祭り型競技プログラミングコンテスト「CODE FESTIVAL 2014」
・↑の予選で落ちたけどそこそこ頑張った人のための敗者復活的なコンテスト
・「CODE FESTIVAL 2014」では、競技プロコン歴が短い人も本選オンサイトに来てほしい!!と、奮発して200名を(交通費込みで)本選に招待したが、Twitter広告とかあちこちで宣伝したら予選参加者が(予選A・B合わせて)700人くらいになった?っぽく、予選通過勢 = 競技プロコンガチ勢 になってしまった
・それだと本来の趣旨からちょっと外れてしまうので、「CODE THANKS FESTIVAL 2014」を開催することにした
・「CODE FESTIVAL 2014」本選が終わってから「CODE THANKS FESTIVAL 2014」を2日程で開催するメールが来た(はず)
・いつの間にか情報処理学会、国立情報学研究所が後援にいたりする
・学会が後援に入っている競技プロコンとか、すごい
・Twitterハッシュタグは”THANKS”付く方も付かない方も #codefes
___________________________________________________________________
ってな感じです。
自分は予選A(2014年9月20日)が330点で198位/498、予選B(2014年10月26日)が230点で304位/502でした。
どちらか一方が200点を超えていれば(あとは学生とかそのあたりの身分的資格がokならば)、CODE THANKS FESTIVAL 2014の参加対象となります。
↑予選Aランキング。
A問題28秒で通したので、開始28秒時点では上位30人くらいの中にいたり。
この画像を今見直して、CODE RUNNER 2014本選の懇親会で知り合ったKuniさんが一つ上にいることに気づいた…。(今回の本選で再会した!)
↑予選Bランキング。
さて、そろそろ本選の話をします。
往路(秋田→東京)は秋田新幹線です。
何ヶ月ぶりに新幹線乗るのか…。(2014年5月以来っぽい)
始発の新幹線に乗るために午前4時起きです。
この新幹線、赤くないぞ!?
都区内きっぷで新橋まで行きます。
秋田、結構雪降ってたけど無事に東京駅まで着き、山手線?京浜東北線?で新橋へ。
10年以上ぶりの、ゆりかもめ!
テンション上がってゆりかもめ新橋駅ホームの写真まで撮ってしまった。
この時、10時ジャスト。
最後尾車両から外を撮ってみました。
テレコムセンター駅で降ります。
駅直結のテレコムセンタービル東棟が会場。
でかい。
どっちが東?
とりあえず人の流れに乗る。
どこかの階でコスプレ撮影会をやっていたっぽい。
AtCoder社長のchokudaiさんと同じエレベーターに乗ったので、「CODE RUNNERでお世話になったconchan_akitaです」と挨拶。
…ってchokudaiさんも参加者と同じ時間に来るんかいなΣ
受付時間(10:30-)までの待ち時間ではCODE RUNNERで知り合ったKuniさんが自分を発見してくださって、お互い今日は新幹線で来た的会話をしていました。
会場入るよー。
受付を済ませてTシャツをもらい、自席へ。
席No.56です。
メモ用白紙がある!
でも裏紙持ってきたのでそっち使うよ!
あとステッカー嬉しい!
でもノートPCは普段持ち歩かないし代わりのタブレットは全体的にカバーかけてるし…どこに貼ろう?
先にお隣さんがいらっしゃったので、ご挨拶。
どこからお越しですか、とか、5GHz帯つなげました?あ、やっぱり文字数エラー出ますよねー!などと会話していましたよー。
会場の様子。
席No.は96が最後でした。
お弁当選択は早い者勝ち。
叙々苑のお弁当って、これ高いやつでは…!?
(叙々苑の牛の弁当を選んでしまった)
うおお…。
こんなものを食べる日が来るとは…。
コンテストは12時-15時なので、この時11時18分ですが、食べます。
…一口目で「うまい!」と思って、あとは(開会式の時間が近いので)ちゃっちゃか食べました。
お弁当を食べながら参加しても良い開会式。
オープニングムービー。
これは何だ!?
AtCoderアカウント名?
色には何か意味が!?
開会式では、関係者の話を聞くなど。
写真は省略。
本日の流れ。
社長直々の、ルール説明。
おおよそ、いつものAtCoderのルールと同様。
今日は3時間で8問。
誤答ペナルティはない!
どんどんWrongAnswer、どーんといこう!
競プロ界隈で流行中?の焼肉。
高級焼肉と焼肉の違いとは。
そういえば、写真中央付近の黒丸はデジカメの仕様です。。。
トートバッグ!欲しい!
…今日の目標が決まった瞬間である。
ご自由にどうぞ。
…これが開始前最後の写真であーる。
(プログラミングとかよく分からない、な人は、次の写真までスクロールしよう。そこから懇親会の話です。)
12:00
スタート。
だがF5押しても問題が表示されない。
十数秒後に見られたので解き始める。
問題はオンサイトじゃない人向けサイトから見られます。
→code thanks festival 2014 A日程(オープンコンテスト)
問題を見ながらこの記事を見ると分かりやすいかな。
A問題のFA(First Answer?Accepted?)賞を狙うも、a*20+b*14とかやっちゃってWrongAnswer(WA)を2回。
安定の緊張っぷりである。
開始数分後、間違えてオープンコンテスト側に登録しちゃった人が多数いると判明。
自分はセーフ。
結局、全員の順位はどう確認すれば…。
集中のためにイヤホンをしました。
せっかくウォークマンに繋いでいるので、何か流そう、でも準備時間短くて作業用BGM決めていない…。
アルバムのABC順で上の方にあった、ClariSのironyにしよう。
「そんな優しくしないで~♪」
…問題は易しい方が嬉しいなー。
続いてB問題。
バッジを多く作成できる順番に機械を動かせば良いことは分かったものの、順番にすること(3変数を大小順に並べること)に苦労する。
if文で比較していったり、そいえばmax()とかあるやん!とif文消して、max(a,max(b,c))で、min(a,min(b,c))で、あれ真ん中の値ってどうやって求めるん…?とかなる。
そいえばsort()あるやん!と3変数を配列に入れてsortして…AC(Accepted)。
ここまで、12時13分00秒。
C問題は苦労せず、12時18分に提出、AC。
このあたりで作業用BGMを、EGOISTの「The Everlasting Guilty Crown 」にする。
「世界は終わりを告げようとしてる~♪」
D問題(定期券)で、楽な世界に終わりを告げられる。
1駅ごとに+100円、定期券区間は+0円。
いちいち1駅ごとに定期券区間か調べて+0円or+100円していったらTLE(TimeLimitExceeded, 制限時間オーバー)した。
forループで1~100000全部見るのが最悪ケースで、そりゃ2sで終わらんか、となる。
場合分けして書いて提出するも、WA。
って全然場合分けできていなかった、全パターン紙に書きだしてコードに書き起こし提出、AC。
この時、12時51分。
E問題も苦労。
「各手順について、その手順を忘れたとして実行したときに最終結果どうなるか調べよう」←このアルゴリズムでいこう。
…あれうまくいかない→最終結果(vector)全出力コード書いて実行→操作できていない石像あるやん!→修正して提出→TLE。
うーむ、見ると4重ループでオーダーがだいたいN*N*R*Cだ、こりゃ5sに間に合わない。
いちいち(N回も)N-1手順を実行するの面倒やん…
そうだ、全手順を実行したときの最終状態を保存して、これ使いまわそう!
3重ループになった!提出!ACだ!
ここまでで、13時40分。
いつの間にか折り返し地点、だがあと1問も解けないのである。
なお、途中で問題の入力の文章に誤りを発見したので、質問を投げて訂正していただきました。
AtCoder始めて長いけど、初めて質問したよ!
G問題を全探索しようと思ったけど、あっさりコード書く手が止まったのでF問題。
アルゴリズム思い浮かばなくて敬遠気味だった(のでG問題に先に手を出した)けど、なんとなく、自分より上位の参加者の人数+1が答えだと分かる。
だがコードがバグる。
vectorの一部要素をeraseするあたりでうまくいっていないようだったが、サンプル通るところまででっちあげた(ぇ)ので提出するも、6割ACで他WA・あるテストケースだけRE。
C++11じゃないとコンパイルできないコードを含んでいるはずなので、そこはちゃんとC++11で提出はした。
結局通せずここで15:00。
お隣さんもF問題通せず、互いに「解きたかったー」などと。
27位でした。
open側に登録しちゃった方についてはよく分からないのでこの順位は正しくないのかも。
…AtCoder歴長いし、もーちょい上にいきたかったぜ^^;
そういえば5完したのでトートバッグもらえる!やった!!
さぁ懇親会だ。
(懇親会では、終始デジカメを首から下げていました。)
あら美味しそう。
テーブル単位でお寿司もあるぞ!
コーラよりオレンジジュース派だぞ!(謎主張)
ゲームが置いてありました。
(デジカメ持ち上げて撮ってみたよ)
競プロerはリズムゲームもできないといけない!
…指ならLv4くらいできます。
あと書道コーディングも”thanks”じゃない方の再現。
書道くらいなら、できそう。
16:49。
ちょい早いですが、それでは皆さん…
乾杯!!
懇親会、お寿司に目をくれる人ばかりで会話なかったので、「皆さんどちらからお越しですか?」と質問を投げてみる。
「長崎から」との答えが返ってきて、秋田-東京間より遠くて謎の敗北感。
その後は適当に幅優先とかアルゴリズムの話など。
競技プログラミング歴数か月、かつ蟻本・チーター本所持者ばかりで、来年は”THANKS”じゃない方にいそうな将来有望才能人の集団でした。
競プロ歴2年半で、蟻本・チーター本未所持で、やっとここまできた努力型凡人もいるんですよ!!!
(2年半何していたかはconchan.akita.jpから参加コンテスト一覧をどうぞ)
太鼓の様子。
書道コーディングの様子。
まだ17:29なので、これから作品増えます。
DDRもあるよ!
高校で書道を選択していたりもしたので、書道コーディングしました。
ちゃんと実行できるコードを書きました。
数年ぶりの書道、小筆しか使わなかったけど難しい。
とっても文字つぶれまくりである。
え?よく見えない?
一番ごちゃごちゃしているやつだからね。
拡大してみた。
練習しないと字をきれいに書けない。
長々書いているけど、return 0;するだけ。
つまり、何もしないプログラムでございます。
コードを書き始めるときに、コピペすることで、あとから必要なものが増えて書き足す必要がなかったり、しばしば書く長いテンプレ文を省略できます。
DDRは皆さん苦戦していた感じ。
18:50、書道コーディングの作品がだいたい揃ったようです。
まずは左側。
エディタ戦争(vim,emacs)だったり、”THANKS”じゃない方の参加者が考案して会場にいる人が書いた作品(NullPo(ry)とかあったり。
右側。
妖怪をprintfしている方がいらっしゃいますね…。
さてさて、書道コーディングはchokudaiさん賞なるものがあるみたいですよ~?
どの作品かな。
「成長の余地があるものを選ぶ」的発言…これは…。
書道コーディングchokudai賞発表中#codefes pic.twitter.com/xSOyH1JfFP
— トイレ5個さん (@chako0407) 2014, 12月 7
えっ、それ…
ワタクシノサクヒンデスヨー
というわけで選ばれてしまいました。
わざわざカバンからファイル取り出してコードをせっせと書き写したおかげでしょうか。
でも、長くて入りきらずに省略して、この作品ですよ。
「ここから様々なコードが書かれていく!なので(誰も満点取れなかった)H問題もこの人に解いてもらおう!」みたいな講評だったでしょうか、受賞にびっくりしてあまり覚えていません。
びっくりして近くにいた方に腕をぶつけてしまいました。ゴメンナサイ。
amazonギフト券をいただいた!
H問題を解くという宿題もいただいた…。
解いたらお知らせします、まだ解いていません、この記事書くのにさえ結構な時間をかけています。解きました!リンクは本記事最上部にあります。
最後に全員で記念撮影。
写真撮るの好きだけど撮られるのは超苦手なんです…。
復路は夜行バスで。
秋田は雪が増していたような。
弱小競プロerでしたが、すごい楽しかったです。
自分とLv差があまりない人ばかりなので、とても会話しやすい!
(才能と成長スピードは大敗ですけどね)
懇親会の始まる直前?始まってすぐ?に「頭上にTwitterアカ画像あればいいのに」とおっしゃっていた方がいました。
確かに、Twitterで相互フォローしても誰が誰だかさっぱり(顔とアカを合わせられない、対面でアカ教えあっていない場合は会話さえ…)なので、ぜひそういうシステムを!(←何
来年も参加したいけど、参加資格的に…。
(就活中です。就職先募集中です、本気で。どなたか拾ってください!)
スタッフ、参加者の皆さん、お疲れ様でした。
会場にいなくてもTwitterにいるので、適当に話しかけてください。
むっちゃ臨場感がある記事ですね!
読んでいてワクワクしました!
ありがとうございます!
>つねさん
コメントありがとうございます!
写真撮るの大好き人間&文章書くの苦手なので、写真たっぷりでお送りしました。
文章で書かれるより、写真の方がやっぱり伝わりますよねー。
また、気が向いたときに、お越しくださいませ。