ACM ICPC(ACM大学対抗プログラミングコンテスト)について

プログラミング・コンテストでは、ACM/ICPCという大学対抗戦が世界で最も有名なコンテストで、国内戦では毎年200チームが参加するが、そのうちまともなプログラミングが書けて、実質的な競争に参加できるのは、上位10チームぐらいで、あとの190チームはワンランク下で、まともな競争相手にならない。

上位10チームにしても、上位2チームぐらいが世界大会にやっと出場資格が得られるというレベルで、その2チームも世界大会に出ると、中国やアメリカなどのチームにコロリと負けてしまうレベルなのだという。

こういう話は事実に基づかないといけないので知り合いに聞いたここ10年間にICPC世界大会に出場した大学の一覧。

  • 1998(オランダ)
    • 京都大学(出場資格:東京大会2位、ワイルドカード)18位タイ/62チーム
    • 早稲田大学(出場資格:東京大会7位、ホスト校特別枠)--位
    • 1位:The University of Waterloo(カナダ)、2位:the University of Freiburg(デンマーク)、3位:St. Petersburg Institute of Fine Mechanics and Optics(ロシア)
  • 1999(オーランド)
    • 京都大学(出場資格:台北大会7位、上海大会8位、京都大会9位、ホスト校特別枠?)7位タイ/60チーム
    • 1位:St. Petersburg University(ロシア)、2位:The University of Melbourne(オーストラリア)、3位:The University of Waterloo(カナダ)
  • 2000(バンクーバー)
    • 京都大学(出場資格:つくば大会4位、日本チーム中1位)14位タイ/64チーム
    • 1位:St. Petersburg University(ロシア)、2位:Virginia Tech(アメリカ)、3位:St. Petersburg Institute of Fine Mechanics and Optics(ロシア)
  • 2001(ハワイ)
    • 東京大学(出場資格:テジョン大会2位、函館大会2位、ワイルドカード)18位タイ/64チーム
    • 1位:Shanghai JiaoTong University(中国)、2位:Massachusetts Institute of Technology(アメリカ)、3位:University of Waterloo(カナダ)
  • 2003(プラハ)
    • 東京工業大学(出場資格:マニラ大会1位)27位タイ/73チーム
    • 1位:St. Petersburg Institute of Fine Mechanics and Optics(ロシア)、2位:KTH - Royal Institute of Technology(スウェーデン)、3位:Belarusian State University(ベラルーシ
  • 2004(上海)
    • 東京大学(出場資格:マニラ大会1位)--位
    • 京都大学(出場資格:愛媛大会1位)29位タイ/78チーム
    • 1位:Shanghai Jiaotong University(中国)、2位:Moscow State University(ロシア)、3位:St. Petersburg Institute of Fine Mechanics and Optics(ロシア)
  • 2005(サンアントニオ)
    • 東京大学(出場資格:マニラ大会2位)19位タイ/83チーム
    • 京都大学(出場資格:八王子大会1位)19位タイ/83チーム
    • 1位: Saratov State University(ロシア)、2位:Jagiellonian University - Krakow(ポーランド)、3位:Altai State Technical University(ロシア)
  • 2006(東京)
    • 京都大学(出場資格:横浜大会2位)14位タイ/88チーム
    • 東京大学(出場資格:マニラ大会2位、横浜大会3位)26位タイ/88チーム
    • 埼玉大学(出場資格:マニラ大会3位)44位タイ/88チーム
    • 1位: Warsaw University(ポーランド)、2位:Tsinghua University(中国)、3位:St. Petersburg University of IT, Mechanics and Optics(ロシア)

たしかに世界大会に出場しているのは年間1〜2チーム。Wikipedia.jaによれば以下のとおり5校だけ。

過去に世界大会まで進出した日本の大学は、京都大学7回、東京大学5回、東京工業大学2回、早稲田大学1回、埼玉大学1回。このうち、日本チームで過去最高成績は2000年の7位タイである。世界大会が日本で開催されるのは、2007年が初となる。

世界大会の成績でいえば、ロシアにばっさりとやられている気がする。

アジア地区予選 日本大会からの世界大会への出場枠は基本的に1校。なので、優勝チームがその枠をとる(世界大会出場は1大学1チームしか出場できないので大学単位で決まる)。ACMから追加枠が来ることもあるそうな。ここ数年のアジア地区予選 日本大会には海外からチームがやってきて優勝をかっさらっていくことが多い。

上海交通大学(Shanghai Jiao Tong University)に草狩場にされてしまっている。一方で、日本のチームも他のアジア大会に参加してそこで世界大会出場枠を得ていることが多い。

ワールドカード枠がなくなった今現在2チーム以上出すためには

  1. アジア地区予選 日本大会で優勝する
  2. 他の地区予選で高順位に入る(1〜3位)

ただし、普通は日本大会でだめだったから他の地区大会へ参加するだろうと思われるので日本大会よりも開催日程が後の大会にしか参加しないと思われる。なお、ACM/ICPC日本支部は日本のレベルアップのためにいろいろとがんばっており、その一環として日本大会で好成績を収めたチームに対して海外の他の地区大会へ参加する渡航費用を援助している。

この状況を考えると世界大会に1〜2チームしかでていないというのはネガティブな結果とはいえないような気が。むしろ2チームでている年はよくがんばっており、3チームでた今年なんて大成果の年ではないかと思う。本当は、国別の参加状況を調べるべきなんだろうけど数えるのが面倒なので誰か他の人にお任せしたい。

まとめ、引用した部分に関して事実からいえば大筋でそれほど間違っていない。

  • ただし、世界大会への出場チーム数が1〜2というのはそれほどネガティブな結果ではない
  • 世界大会で上位陣にはまだ食い込めていないが、順位なし(問題が解けない)というのはなくなりつつある
  • ICPCをネタにプログラミング能力の話をするというのはちょっと微妙。むしろプログラミング能力はあがっているように思う(世界大会への参加チーム数、世界大会の順位から)