国际信息学奥林匹克竞赛(International Olympiad in Informatics,IOI),是面向中学生一年一度的信息学科竞赛。第一届国际信息学奥林匹克竞赛于1989年在保加利亚的布拉维茨举行。
这项竞赛包含两天的计算机程序设计,主要编程语言以C++为主,解决各类算法问题。选手以个人为单位,每个国家最多可选派4名选手参加(2016年共有83个国家参赛)。参赛选手从各国相应计算机竞赛中选拔。
在两天的比赛日中,一般来说参赛选手每一天都需要在5小时内一台计算机的帮助下独立解决3道题目。比赛中不允许任何形式的交流或是查阅参考资料。通常,参赛选手都要为每一道题目编写一个程序(编程语言为C、C++或是Pascal)并在比赛结束之前提交。随后大赛的主办方将采用若干组测试数据对程序进行测试。这些测试数据被分作若干个子任务,选手只有通过某个子任务中所有的测试点才能获得对应的分数。如果根据给定的某一组输入数据,程序可以在限定的内存空间和时间内正确的得到输出结果,那么该名选手即获得这一组数据的相应分数。近年出现了一种新的比赛题型,提交答案题——在比赛开始之间参赛选手将获得各组测试数据,他们要提交的是相应的计算结果,而非程序本身。选手可以通过编写程序、手工计算或者两者结合来完成这类题目。另一种新题型是交互题,它要求选手编写的程序与测试系统进行交互(一般是通过调用题目给出的交互器),选手将通过询问或操作来试图求解问题。
每名参赛选手的各题得分之和即为总得分。在颁奖仪式上,参赛选手将根据他们的得分获得相应的奖项。排名前50%的参赛选手(平均每个国家2名)将获得奖牌。获得金、银、铜牌和未获奖牌人数之比约为1:2:3:6。
与其他学科的奥林匹克竞赛不同,国际信息学奥林匹克竞赛章程严格禁止对参赛国家的排名但是每场比赛之后仍然会有不少非官方的排名出现。
这是一份历届最优秀得奖者的名单。*号代表满分,这在国际信息学奥林匹克中是十分罕见的。另外,金奖中的第一名,第二名和第三名也有标示。 这份名单只包含那些容许选拔后的国家队成员多次参与国际信息学奥林匹克的国家。