将有两个比赛日。每天,参赛者将在5小时内完成三项任务。
在比赛第一天之前,将有一个2小时的练习比赛,让所有参赛者熟悉评分系统。实践竞赛中使用的任务将在IOI之前公布。在练习比赛中,参赛者可以仅在纸上为这些任务提供打印解决方案。
分级和评估在分级系统上进行,该系统为每个解决方案提交提供类似的执行环境。工作站可以对分级系统进行网络访问。
分级工作站将在与参赛者工作站类似的硬件上配置。然而,由于软件配置的不同,不能保证竞争工作站和分级工作站将具有相同的执行环境。
每位参赛者将在每个比赛日收到一个信封中的正式英文版任务。组长可以为参赛者翻译任务声明,翻译后的声明将与英文版一起在信封中提供。每位参赛者都可以在线访问任务声明的官方英文版和所有电子格式的翻译(PDF)。
每个任务要么是编程任务(解决方案是源代码)要么是仅输出任务(解决方案是一组输出文件)。每个任务都分为若干个子任务,每个子任务都相当于总分的一部分。
对于每个编程任务,都指定了时间和内存限制。一般来说,时间和内存限制是慷慨的(例如,预期解决方案所需的两倍)。内存限制是整体内存使用情况,包括可执行代码大小、堆栈、动态分配的内存等。
对于每个任务,参赛者可以从评分系统下载一个zip文件。对于编程任务,该文件包含接口文件、示例分级程序和所需源文件的示例实现。此示例实现显示了使用任务界面的示例,但不能解决问题。工作站上提供的样品分级器与分级系统使用的官方分级器不同。
参赛者使用评分系统提交任务解决方案。除非另有说明,否则以下限制适用于提交材料:
在每个编程任务中:
每个提交的解决方案都必须用C++编写,其大小不得超过50 KiB。评估服务器对程序的编译必须在最多10秒内完成,并最多使用512 MiB的内存。
提交不得执行显式输入和输出操作;相反,数据只能通过任务语句中指定的接口进行交换。特别是,禁止直接访问任何文件,包括标准输入或标准输出(但允许写入标准错误)。
在每个仅输出任务中,每次提交都是一组输出文件。
参赛者每分钟最多可以提交一次每个任务的解决方案。这一限制不适用于比赛回合的最后15分钟。
参赛者每项任务最多可以提交50件。
允许使用多个线程。请注意,提交的运行时间将计为所有线程的运行时间之和。例如,如果有两个线程每个线程运行5秒(因此,程序在5秒内完成),那么提交的运行时间将为10秒。
技术委员会可以提供提交评分解决方案的替代方法。
每项任务的分数将按以下方式计算:
每个子任务由一些测试案例组成。除非另有说明,否则在每个编程任务中,每个测试用例执行一次提交。
对于每次提交,每个测试案例的分数是根据程序执行和/或输出计算的。
每个测试用例的程序执行受时间和内存限制的约束,这些限制在分级系统中给出。如果程序超过这些限制,则此测试案例将获得0分。
对于每次提交,除非任务声明中另有说明,否则每个子任务的分数是子任务中测试案例的最低分数。
每个子任务的最终分数是该子任务在所有提交中的最高分数。
每个任务的最终分数是其子任务的分数之和。这个和四舍五入到最接近的小数点后2位。
例如,考虑一个在包含两个子任务的任务上提交两次的参赛者。如果第一个提交的解决方案在第一个子任务中获得30分,第二个子任务获得10分,第二个解决方案在第一个子任务中获得0分,第二个子任务获得40分,那么该任务的最终分数将为70分。
每项任务的最高分数为100分。
参赛者可以使用评分系统查看其提交状态,并获得有关其源代码编译结果的简短报告。
对于每次提交,评分系统都会报告每个子任务的分数。如果子任务没有完全解决,分级系统只会对子任务中得分最低的测试案例中的第一个测试案例提供反馈。反馈包括测试案例编号和以下原因之一:
输出正确
输出不正确
输出部分正确
执行超时
执行终止(可能因违反内存限制而触发)
执行失败,因为返回代码不是零
违反协议
如果参赛者的程序没有遵循问题陈述中描述的正确协议,他们可能会收到“违反协议”的反馈。提交收到此反馈的一些可能原因包括:
从标准输入或打印到标准输出的读取
调用exit()
然而,应该注意的是,表现出上述行为的提交可能并不总是导致“违反协议”的反馈,上述列表也不是详尽无遗的。
除非另有说明,否则当提交材料收到具有部分分数的子任务的部分分数时,会显示“输出部分正确”的反馈。
测试案例在所有提交的文件中都以相同的方式排序。不会向参赛者提供有关实际测试案例、参赛者解决方案产生的输出或任何其他执行细节的信息。
应该注意的是,反馈中报告的分数只是临时的。向参赛者报告后,分数可能会以两种方式发生变化:
由于比赛结束后的上诉成功。
在某些情况下,参赛者的提交材料可能会被重新评估。这种重新评估有时可能会导致不同的总分(例如,如果解决方案表现非决定性或非常接近时间或内存限制)。在这种情况下,提交的最终分数是其最新重新评估的分数。评分的这种变化不能上诉。请注意,每个子任务的最终分数仍然是所有提交的最高分数。
如果测试数据出现错误,科学委员会将尝试,但没有义务遵循以下流程:
我们将尽一切努力修复测试数据,并尽快重新升级所有解决方案。
只有当评分数据与比赛前科学委员会的意图明显不同时,才能添加额外的测试数据,例如,比赛前准备的测试数据没有正确上传到评分系统。
延迟发现问题,特别是在比赛的最后2小时内,可能是延长比赛时间的理由。
为了保护任务的机密性,在向GA成员提交比赛日任务的时刻到第二天比赛结束期间,禁止参赛者和代表团团长之间的任何直接和间接接触和沟通。在此期间,参赛者不得通过任何直接或间接方式与任何了解任务的人进行沟通(比赛期间通常与科学委员会的沟通除外)。
在每个比赛日结束前,未经科学委员会明确批准,GA会议与会者不应与任何不了解比赛任务的人共享任务相关信息。参赛者、GA成员和其他可以访问任务的人必须遵守任何限制他们访问IOI场地特定部分的指示。
如果参赛者违反隔离规定,参赛者可能会被取消资格。如果与国家代表团有关联的其他人违反了隔离规定,那么该代表团的所有参赛者都可能被取消资格。