ACM国際大学対抗プログラミングコンテスト(ICPC)とは
ACM国際大学対抗プログラミングコンテスト(ACM International Collegiate Programming Contest、略称: ACM-ICPCまたはICPC)は、世界中の大学を対象とした、学生プログラマーの腕を競う大会です。このコンテストは、コンピュータプログラミングにおける知識、問題解決能力、チームワークを試す場として、世界中で広く認知されています。
IBMがスポンサーとして協力しており、ACM(Association for Computing Machinery)の後援のもと、世界各地で自律的に運営されています。世界中の大学コミュニティが協力して地区大会を実施し、世界大会への切符をかけて競い合います。毎年、多くの大学から多数のチームが参加し、世界的な規模で開催されるプログラミングコンテストとして知られています。
歴史
ICPCの歴史は、1970年に
テキサスA&M大学で開催されたコンテストに遡ります。当初はUpsilon Pi Epsilon Computer Science Honor Society (UPE)の支部が主催していましたが、1977年にACM Computer Science Conferenceと併設して最初の決勝大会が行われ、現在の勝ち抜き型の形式となりました。
1977年から1989年の間は、主に
アメリカ合衆国と
カナダのチームを対象として開催されていましたが、1989年からは
ベイラー大学が大会本部となり、世界中の大学が参加する現在の形へと発展しました。1997年に
IBMがスポンサーとなってからは、参加大学数、チーム数が飛躍的に増加し、2005年には84カ国からの参加がある世界的なコンテストに成長しました。参加チーム数は毎年10%から20%の割合で増え続けており、今後も更なる規模拡大が見込まれています。
世界大会
ICPCにおける世界大会(ACM-ICPC World Finals)は、各地区予選を勝ち抜いたチームが集まる決勝戦です。世界各地の素晴らしい開催地で、4日間にわたるイベントとして実施されています。このイベントでは、Upsilon Pi Epsilonが全地区大会の優勝チームを表彰するほか、近年では世界大会の優勝チームが自国の首脳から表彰を受けたり、ACM Awards Ceremonyでも表彰されています。
日本における歴史
日本では、1998年に
早稲田大学をホストとして、初めてとなるアジア地区予選大会が東京で開催されました。以来、毎年開催地を変えながら、国内でもアジア地区予選が実施されています。
日本国内での予選は、参加チーム数を制限するために、国内予選をインターネットを通して実施しています。国内予選で優秀な成績を収めたチームには、アジア地区予選大会への参加資格と、金銭的な支援が与えられます。近年では、上位2大学の最上位チームが派遣されることが多いです。
2000年に
筑波大学をホストとして開催されたアジア地区予選つくば大会では、国内予選に88チーム、アジア地区予選に34チームが参加しました。2010年には国内予選に67大学287チーム、アジア地区予選には30大学35チームが参加しました(国内予選に参加していない海外チーム6チームを含む)。
コンテストのルール
ICPCは3人1組のチーム戦であり、チームメンバーは、大学入学から5年(4月入学で1-3月生まれの場合は6年)以内の大学生である必要があります。また、過去に世界大会に2回出場した者や、地区予選大会に5回出場した者は、再び参加資格を失います。
コンテストでは、チームは5時間で8〜12問(通常は10問)のプログラミング問題を解きます。問題はどの順番で解いても構いません。解答プログラムはC、
C++、
Javaのいずれかで記述し、提出します。提出されたプログラムは、コンテスト中は非公開のテストデータで実行され、不正終了や誤った解答の場合は、その旨が通知されます。チームは、何度でもプログラムを修正し、再提出することができます。規定された実行時間内に完了しない場合は、不正解となります。
最も多くの問題を正解したチームが勝者となります。同数の正解チームがいた場合は、コンテスト開始から各問題の正解提出までの経過時間に、不正解の提出ごとに20分を加算した総和によって順位が決定されます。
例えば、2チームが2問正解で同点の場合、チームAは1時間後と2時間45分後に正解を提出し、チームBは1時間20分後と2時間後に正解を提出し、さらに1回不正解があったとします。この場合、チームAの総時間は3時間45分、チームBは3時間40分(不正解ペナルティ20分を含む)となるため、チームBが勝利します。
他のプログラミングコンテストと比較して、ICPCは問題数が多い(5時間で8問以上)こと、チームで1台しかコンピュータが使えないことが特徴です。そのため、チームワークとプレッシャーへの耐性が重要になります。
日本におけるコンテストのルール
日本におけるアジア地区予選大会のルールは、基本的にはコンテスト全体で定められているルールと同様です。過去の大会では、問題数や制限時間に若干の変更が見られます。国内予選では、3時間の制限時間で5〜7問の問題が出題されます。
地区予選と世界大会への進出ルール
ICPCは、ローカルコンテスト、地区予選大会、世界大会の3段階で構成されます。多くの大学では、まずローカルコンテストを開催し、地区予選に出場するチームを決定します。地区予選を勝ち抜いたチームが世界大会に進出できます。一つの大学から複数のチームが地区予選に参加することはできますが、世界大会には1大学から1チームのみが出場できます。各地区予選からは最低1チームが世界大会に進出しますが、大規模な地区予選からは複数チームが選出されることもあります。
選手は世界大会に2回までしか参加できません。大規模な地区予選では、大学ごとのローカルコンテストと地区予選大会の間に、小地区予選が開催されることもあります。
アジア地区、日本における進出ルール
アジア地区からの世界大会進出チーム決定ルールは、2006年時点では毎年変更されており、大きく変動していました。日本で開催される地区予選大会からの世界大会進出チーム決定は、基本的にはアジア地区全体のルールに則って行われます。
歴代優勝校
過去の日本におけるアジア地区予選大会の開催地と優勝大学は以下の通りです。
2016年度: つくば大会 筑波大学
2015年度: つくば大会
筑波大学
2014年度: 東京大会 早稲田大学
2013年度: 会津大会
会津大学
2012年度: 東京大会 東京工業大学
2011年度: 福岡大会
九州大学
2010年度: 東京大会 国立情報学研究所
2009年度: 東京大会
早稲田大学
2008年度: 会津大会 会津大学
2007年度: 東京大会
東京大学
2006年度: 横浜大会 慶應義塾大学
2005年度: 東京大会
東京工科大学
2004年度: 愛媛大会 愛媛大学
2003年度: 会津大会
会津大学
2002年度: 金沢大会 金沢工業大学
2001年度: 函館大会
公立はこだて未来大学
2000年度: 筑波大会 つくば国際会議場
1999年度: 京都大会 京都リサーチパーク
1998年度: 東京大会 早稲田大学
世界大会に進出した日本の大学とその回数(2022年時点)は、東京大学18回、京都大学16回、東京工業大学7回、筑波大学4回、会津大学4回、埼玉大学2回、電気通信大学2回、早稲田大学2回、慶應義塾大学2回、大阪大学1回です。日本チームの過去最高成績は、2013, 2015, 2019, 2022年の東京大学チームの3位です。世界大会が日本で開催されたのは2007年が初めてです。
外部リンク
ICPC World Finals
公益財団法人情報科学国際交流財団 - 解散した ACM 日本支部に代わって日本国内のACM国際大学対抗プログラミングコンテスト開催を引き継ぐ
楽天、ACM国際大学対抗プログラミングコンテスト 東京大会に特別協賛