关于NOI系列赛编程语言使用限制的规定
适用范围
本规定适用于NOI系列的各项全国性竞赛。NOI其它规章、规则中所有与本规定不符之处,均以本规定为准。不遵守本规定所造成的不良后果由选手本人承担。评测环境与竞赛环境相同。
编程通则
1. 源程序文件提交规则
对于每一道试题,选手只应提交一个源程序文件。
文件命名规则:
- 源程序文件名由试题名称缩写加后缀构成
- 源程序文件名及后缀一律使用小写
- 各语言后缀:
- PASCAL:
.pas
- C:
.c
- C++:
.cpp
- PASCAL:
多文件处理: 当参赛选手对一道试题提交多份使用不同后缀的源程序文件时,测试系统按照 .c
, .cpp
, .pas
的顺序选取第一份存在的文件进行编译和评测,并忽略其他文件。
2. 文件大小和目录限制
- 使用C/C++语言者不得使用自己的头文件
- 使用Pascal语言者不得使用自己的库单元
- 除另有规定外,每道题参赛程序源文件不得大于 100KB
- 如选手在规定目录下另建其它子目录,这些子目录中的文件均会被评测系统忽略
3. 程序执行要求
选手程序应正常结束并返回Linux系统,主函数的返回值必须为 0。
4. 程序行为限制
选手程序中只允许通过对指定文件的读写、以及对指定库函数的调用等题目中明确规定的方式与外部环境通信。
严禁下列操作:
- 试图访问网络
- 使用
fork
、exec
、system
或其它线程/进程生成函数 - 打开或创建题目规定的输入/输出文件之外的其它文件和目录
- 运行其它程序
- 改变文件系统的访问权限
- 读写文件系统的管理信息
- 使用除读写规定的输入/输出文件之外的其它系统调用
- 捕获和处理鼠标和键盘的输入消息
- 读写计算机的输入/输出端口
5. 内存使用限制
除题目另有规定外,选手程序中所使用的静态和动态内存空间总和不得超过 128MB。
各语言特定限制
对C程序的限制
禁止使用:
- 内嵌汇编
- 以下划线开头的库函数或宏(自己定义的除外)
允许使用的头文件: 在程序中只能使用下述头文件以及被它们所间接包含:
c
assert.h, ctype.h, errno.h, float.h, limits.h,
math.h, stdio.h, stdlib.h, string.h, time.h
整数类型限制: 64位整数只能使用 long long
类型及 unsigned long long
类型。
对C++程序的限制
禁止使用:
- 内嵌汇编
- 以下划线开头的库函数或宏(自己定义的除外)
整数类型限制: 64位整数只能使用 long long
类型及 unsigned long long
类型。
STL使用: 可以使用STL中的模板。
对Pascal程序的限制
禁止使用:
- 内嵌汇编
- 任何编译开关
库单元限制: 在程序中禁止使用除以下单元之外的其他单元:
system
库(自动加载)math
库(须用uses math
子句)
合法性判定
凡满足上述规定,并且能在题目规定的命令行下编译通过的程序均为合法的源程序。
注意
即使源程序合法,只要程序执行时有违规行为时,仍被判定为违规。
生效时间
本规定自公布之日起生效。