ACM国際大学対抗プログラミングコンテスト

ACM国際大学対抗プログラミングコンテスト (ACM International Collegiate Programming Contest、略称:ACM-ICPCまたは単にICPC) は、コンピュータープログラミングにおける勝ち抜き型のコンテストである。世界中の大学を対象として毎年開催されている。このコンテストはIBMにスポンサーとして協力を受けている。Executive DirectorのWilliam B. Poucher (大会本部であるベイラー大学に教授として在籍) のもと、ACMの後援によって六大州の各地で自律的に運営が行われている。

歴史

ACM国際大学対抗プログラミングコンテスト (ICPC) は1970年にテキサスA&M大学で開催されたコンテストがその始まりである。この年のコンテストはUpsilon Pi Epsilon Computer Science Honor Society (UPE) のAlpha Chapterが主催した。1977年にACM Computer Science Conferenceと併設して最初の決勝大会が行われ、この時から現在のような勝ち抜き型のコンテストとなった。

1977年から1989年の間は、主にアメリカ合衆国カナダのチームを対象にして開催されていた。1989年からベイラー大学が大会本部となり、世界中の大学コミュニティの手で地区大会 (Regionals) が実施されるようになった。ACMの後援のもとで多くの企業のサポートを得て、2005年には84カ国からの参加がある世界的なコンテストに成長した。

1997年にIBMがスポンサーとなってから、コンテストの参加者は飛躍的に増大した。1997年の大会には560大学から840チームが、2007年には1,821大学から6,700チームが参加した。参加チーム数は毎年10-20%の割合で増え続けており、今後もさらに大規模になるだろうと考えられている。

ACM国際大学対抗プログラミングコンテストにおいて、世界大会 (ACM-ICPC World Finals) がその決勝戦である。歴史を振り返ると、世界各地の最高の開催地で4日間にわたるイベントが開催されている。このイベントで、Upsilon Pi Epsilonが全地区大会の優勝チームを表彰する。近年 (2009年時点) では、世界大会の優勝チームは自分たちの国の首脳から表彰を受け、毎年行われるACM Awards Ceremonyでも表彰されている。

日本における歴史

日本では、国内で初めてとなるアジア地区予選大会が1998年に早稲田大学をホストとして東京で開催された。これ以降、会場を変えながら、日本国内でも毎年アジア地区予選が開催されている。

日本では国内での初開催以来、アジア地区予選大会に参加するチーム数を制限するため、アジア地区予選大会の前にインターネットを通して国内予選が行われている。例年、この国内予選で優秀な成績をおさめたチーム (近年は、上位に入った2大学の最上位チームであることが多い) は、日本以外で開催されるアジア地区予選大会へ金銭的な支援を受けて派遣される権利を得る。

2000年に筑波大学をホストとして開催されたアジア地区予選つくば大会では、国内予選への参加が88チーム、アジア地区予選への参加が34チームであった。2010年には、国内予選への参加が67大学287チーム、アジア地区予選大会への参加が30大学35チーム (国内予選に参加していない6チームの海外チームを含む) となっている。

コンテストのルール

ICPCはチーム戦であり、それぞれのチームは3人の学生から構成される。参加者は、国内予選前の時点で大学入学から5年(4月入学で1-3月生まれの場合は6年)に満たない大学生でなければならない。過去に世界大会に2年出場、もしくは地区予選大会に5年出場した学生は再び参加する権利を失う。

コンテストの間、チームは5時間で8-12問 (典型的には10問) のプログラミングの問題を解く。与えられた問題を解く順番は不問である。選手は回答のプログラムをCC++Javaのいずれかで書いて提出しなければならない。提出すると、プログラムはテストデータを入力として実行される。このテストデータは、コンテスト中は公開されない。プログラムが不正に終了した場合や、正しい解を出すことができなかった場合は選手にその旨が伝えられ、選手は何度でも回答プログラムを修正し、提出することができる。各問題ごとに規定された実行時間内にプログラムが実行を完了しなかった場合は、不正解の扱いとなる。

最も多くの問題を正解したチームが勝者となる。メダルや賞を与えるために引き分けのチームに順位をつける必要がある場合、コンテスト開始時から各問題に正解を提出した時点までの経過時間に最終的に正解した問題について不正解の提出ごとに20分が加算され、その総和によってチームの順位が決定される。

例えば2つのチームRedとBlueがそれぞれ2問を正解して引き分けとなっている状況を考える。チームRedは、コンテストの開始から1:00後と2:45後に、それぞれ問題AとBに解答を提出した。このチームは問題Cに対して不正解の通知を受けたが、最終的に問題Cを正解していないため、これは無視された。チームBlueは、コンテスト開始からそれぞれ1:20後と2:00後に、それぞれ問題AとCに解答を提出した。このチームは問題Cに対して1回不正解の通知を受けた。このとき、チームRedの総時間は1:00+2:45=3:45と、チームBlueの総時間は1:20+2:00+0:20=3:40となる。最終的にチームBlueの勝利となる。

他のプログラミングコンテスト (例えば国際情報オリンピック) と比較して、ICPCの特徴は問題数が多いこと (ちょうど5時間で8問以上) である。他の特徴として、チームには3人の学生がいるにもかかわらず、各チーム1台しかコンピュータを使うことができないということがある。このことが時間のプレッシャーをより大きなものにしている。勝つためには良いチームワークとプレッシャーに耐える能力が必要である。

日本におけるコンテストのルール

日本におけるアジア地区予選大会のルールは、基本的にはコンテスト全体で定められている上記のルールと同様である。1998年-2003年のアジア地区予選大会では問題数が8問だったが、2004年-2006年は9問、2007-2011年は10問で行われている。国内予選は3時間の制限時間で行われ、2003年までは5問、2004年-2009年は6問、2010-2011年は7問用意されている。

地区予選と世界大会 (進出ルール)

このコンテストはいくつかの段階で構成される。多くの大学では地区予選レベルの大会に参加するチームを決定するためのローカルコンテストを開催する。それから大学(の代表チーム)が地区予選大会に参加し、競技を行う。地区予選大会の勝者が世界大会に進出する。ある1つの大学から複数のチームが地区予選大会に参加することはできるが、世界大会には1つの大学から1つのチームしか参加することができない。各地区予選大会から、最低でも1チームが世界大会に進出する。多くのチームが参加する地区予選大会からは、複数のチームが世界大会に進出することがある。 (1つの巨大な地区予選大会から6チームものチームが出場することも時々ある)

1人の選手は世界大会に2回までしか参加することができない。

巨大な地区予選大会では、大学ごとのローカルコンテストと地区予選大会の間に小地区予選大会 (もしくは予選大会) を開くことがある。

アジア地区における進出ルール

2006年時点では、アジア地区からの世界大会進出チーム決定のルールが毎年のように変更されており、大きく揺れ動いている。

日本における進出ルール

日本で開催される地区予選大会から世界大会へ進出するチームの決定は、基本的にアジア地区全体のルールに則って行われる。


歴代優勝校

Years
YearCountryInstitution
2022  アメリカマサチューセッツ工科大学
2021  ロシアニジニ・ノヴゴロド国立大学
2019  ロシアモスクワ大学
2018  ロシアモスクワ大学
2017  ロシアサンクトペテルブルク国立情報技術・機械・光学大学
2016  ロシアサンクトペテルブルク大学
2015  ロシアサンクトペテルブルク国立情報技術・機械・光学大学
2014  ロシアサンクトペテルブルク大学
2013  ロシアサンクトペテルブルク国立情報技術・機械・光学大学
2012  ロシアサンクトペテルブルク国立情報技術・機械・光学大学
2011  中国浙江大学
2010  中国上海交通大学
2009  ロシアサンクトペテルブルク国立情報技術・機械・光学大学
2008  ロシアサンクトペテルブルク国立情報技術・機械・光学大学
2007  ポーランドワルシャワ大学
2006  ロシアサラトフ国立大学
2005  中国上海交通大学
2004  ロシアサンクトペテルブルク国立情報技術・機械・光学大学
2003  ポーランドワルシャワ大学
2002  中国上海交通大学
2001  ロシアサンクトペテルブルク大学
2000  ロシアサンクトペテルブルク大学
1999  カナダウォータールー大学
1998  チェコプラハ・カレル大学
1997  アメリカハーベイ・マッド大学
1996  アメリカカリフォルニア大学バークレー校
1995  ドイツアルベルト・ルートヴィヒ大学フライブルク
1994  カナダウォータールー大学
1993  アメリカハーバード大学
1992  オーストラリアメルボルン大学
1991  アメリカスタンフォード大学
1990  ニュージーランドオタゴ大学
1989  アメリカカリフォルニア大学ロサンゼルス校
1988  アメリカカリフォルニア工科大学
1987  アメリカスタンフォード大学
1986  アメリカカリフォルニア工科大学
1985  アメリカスタンフォード大学
1984  アメリカジョンズ・ホプキンズ大学
1983  アメリカネブラスカ大学
1982  アメリカベイラー大学
1981  アメリカミズーリ科学技術大学
1980  アメリカワシントン大学
1979  アメリカワシントン大学
1978  アメリカマサチューセッツ工科大学
1977  アメリカミシガン大学

過去の大会

過去の日本におけるアジア地区予選大会

過去の世界大会

2022年時点で、世界大会に進出した日本の大学とその回数は、東京大学18回、京都大学16回、東京工業大学7回、筑波大学4回、会津大学4回、埼玉大学2回、電気通信大学2回、早稲田大学2回、慶應義塾大学2回、大阪大学1回である。このうち、日本チームの過去最高成績は2013, 2015, 2019, 2022年の東京大学チームの3位である。世界大会が日本で開催されるのは2007年が初となる。

過去に世界大会に出場した日本チーム
開催地大学順位メダルメンバー
2022Dhaka東京大学3位/132チームHirotaka Isa, Riku Kawasaki, Yuta Takaya
東京工業大学15位/132チームMikihito Matsuura, Takuto Yoshida, Tatsuhito Yamagata
京都大学23位/132チームChuta Yamaoka, Tomohito Omori, Yuya Kadono
慶應義塾大学42位/132チームKeita Murase, Ryuto Kojima, Tomohiro Nakayoshi
2021Moscow会津大学27位/117チームAki Nakamura, Hiroki Ohashi, Hisato Matsukawa
2019Porto東京大学3位/135チームKohei Morita, Riku Kawasaki, Takuto Shigemura
筑波大学21位タイ/135チームYuki Koike, Akio Matsuzaki, Nozomu Nakajima
京都大学41位タイ/135チームGo Kato, Ryoma Sato, Shunta Masuda
早稲田大学41位タイ/135チームTaiki Yamada, Ko Sato, Ryo Ishizuka
2018Beijing東京大学4位/135チームKazumi Kasaura, Soh Kumabe, Kohji Liu
東京工業大学31位タイ/135チームRiki Fukunari, Mikito Ota, Takuto Yoshida
筑波大学順位無しHaruka Iwaki, Yuuji Moroto, Yasuaki Rokugo
2017Rapid City東京大学12位/133チームKazumi Kasaura, Soh Kumabe, Kohji Liu
東京工業大学34位タイ/133チームNgoc Khanh Do, Hiroki Katsumata, Kohei Morita
慶應義塾大学56位タイ/133チームKento Nikaido, Naoya Niwa, Tetsui Ohkubo
会津大学56位タイ/133チームKazuya Watanabe, Tadamasa Yamaguchi, Takumi Yamashita
2016Phuket東京大学14位タイ/128チームIkumi Hide, Shogo Murai, Shinya Shiroshita
京都大学28位タイ/128チームAkifumi Imanishi, Yuta Ojima, Kazuki Takise
大阪大学順位無しNaohiro Kawamitsu, Kazuma Mikami, Yosuke Sameshima
会津大学順位無しKazuki Omomo, Tadamasa Yamaguchi, Takumi Yamashita
2015Marrakesh東京大学3位/128チームKensuke Imanishi, Shogo Murai, Makoto Soejima
京都大学28位タイ/128チームShogo Ehara, Shoichi Nishimura, Tomohiro Oka
筑波大学28位タイ/128チームTakaaki Hiragushi, Ryosuke Koyanagi, Nozomu Nakajima
2014Ekaterinburg東京大学7位/122チームIkumi Hide, Kengo Nakasuka, Ryoga Tanaka
京都大学19位タイ/122チームShogo Ehara, Shoichi Nishimura, Tomohiro Oka
東京工業大学45位タイ/122チームShogo Kishimoto, Osamu Koga, Kotaro Osada
筑波大学45位タイ/122チームTakaaki Hiragushi, Isamu Takagi, Shunsuke Takano
2013Saint Petersburg東京大学3位/120チーム保坂和宏, Kensuke Imanishi, 副島真
電気通信大学14位タイ/120チームIzuru Matsuura, Naoto Osaka, Masafumi Yabu
東京工業大学順位無しOsamu Koga, Masaya Suzuki, Kohei Suzuki
2012Warsaw東京大学11位/112チームTakuya Akiba, Masaki Watanabe, Kota Yoshizato
京都大学18位タイ/112チームKentaro Imajo, Mitsuru Kusumoto, Shingo Mori
電気通信大学順位無しRyota Fujii, Ryo Matsumiya, Masafumi Yabu
2011Orlando東京大学27位タイ/105チームKazuhiro Hosaka, Eiichi Matsumoto, Yoko Oya
京都大学27位タイ/105チームYasuharu Hirasawa, Norihiro Kamae, Shohei Nishida
2010Harbin東京大学14位タイ/103チームYoichi Iwata, Masatoshi Kitagawa, Song Gi Ryang
京都大学14位タイ/103チームYasuharu Hirasawa, Norihiro Kamae, Shohei Nishida
2009Stockholm東京大学20位タイ/100チームYoichi Iwata, Masatoshi Kitagawa, Song Gi Ryang
会津大学49位タイ/100チームYuki Hirano, Takashi Tayama, Nobuyuki Wachi
埼玉大学順位無しEiichiro Iwata, Junichi Tamura, Hiroshi Watabe
2008Banff東京大学13位タイ/100チームKazuki Ohta, Shuhei Takahashi, Sukehide Ushioda
京都大学47位タイ/100チームToshiyuki Hanaoka, Norihiro Katsumaru, Yuichi Yoshida
2007Tokyo京都大学14位タイ/88チームToshiyuki Hanaoka, Norihiro Katsumaru, Yuichi Yoshida
東京大学26位タイ/88チームNobuo Araki, Hiroshige Hayashizaki, Koichi Suematsu
埼玉大学44位タイ/88チームMasaya Kiwada, Kei Tateno, Hiroshi Watabe
2006San Antonio京都大学19位タイ/83チームRyota Kinjo, Takayuki Muranushi, Hideyuki Tanaka
東京大学19位タイ/83チームToru Nishikawa, Shun Sakuraba, Yu Sugawara
2005Shanghai京都大学29位タイ/78チームRyota Kinjo, Takayuki Muranushi, Hideyuki Tanaka
東京大学順位無しKazuhiro Inaba, Shinya Kawanaka, Toshihiro Yoshino
2004Prague東京工業大学27位タイ/73チームYusuke Izumi, Tomohiro Kaizu, Dai Mikurube
2003Beverly Hills東京大学11位/70チームKazuhiro Inaba, Masahiro Kasahara, Toshihiro Yoshino
東京工業大学21位タイ/70チームYusuke Izumi, Yusuke Kikuchi, Dai Mikurube
2002Honolulu東京大学18位タイ/64チームTsuyoshi Ito, Masahiro Kasahara, Masashi Seiki
2001Vancouver京都大学14位タイ/64チームYasutaka Atarashi, Tetsuo Ogino, Hiroki Yanagisawa
2000Orlando京都大学7位タイ/60チームNorimasa Fujita, Takashi Sumiyoshi, Satoshi Yamada
1999Eindhoven京都大学18位タイ/62チームYasutaka Atarashi, Takashi Sumiyoshi, Hiroki Yanagisawa
早稲田大学順位無しShinya Cho, Masaya Kurisu, Yusuke Sato
1998Atlanta京都大学順位無しMasashi Hayakawa, Ryo Yokoyama, Takuya Yoshihiro

注釈

外部リンク