关于NOI系列赛编程语言使用限制的规定

编程通则
1.对于每一道试题,选手只应提交一个源程序文件。源程序文件名由试题名称缩写加后缀构成,源程序文件名及后缀一律使用小写。PASCAL、C及C++程序的后缀分别为.pas,.c,或.cpp。当参赛选手对一道试题提交多份使用不同后缀的源程序文件时,测试系统按照.c, .cpp, .pas的顺序选取第一份存在的文件进行编译和评测,并忽略其他文件。
2.使用C/C++语言者不得使用自己的头文件,使用Pascal语言者不得使用自己的库单元。除另有规定外,每道题参赛程序源文件不得大于100KB,如选手在规定目录下另建其它子目录,这些子目录中的文件均会被评测系统忽略。
3.选手程序应正常结束并返回Linux系统,主函数的返回值必须为0。
4.选手程序中只允许通过对指定文件的读写、以及对指定库函数的调用等题目中明确规定的方式与外部环境通信。在程序中严禁下列操作:
•试图访问网络
•使用fork、exec、system或其它线程/进程生成函数
•打开或创建题目规定的输入/输出文件之外的其它文件和目录
•运行其它程序
•改变文件系统的访问权限
•读写文件系统的管理信息
•使用除读写规定的输入/输出文件之外的其它系统调用
•捕获和处理鼠标和键盘的输入消息
•读写计算机的输入/输出端口
5.除题目另有规定外,选手程序中所使用的静态和动态内存空间总和不得超过128MB。
对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中的模板。
对Pascal程序的限制
程序禁止使用内嵌汇编,并禁止使用任何编译开关。
在程序中禁止使用除system库(自动加载)和math库(须用uses math子句)之外的其他单元。

凡满足上述规定,并且能在题目规定的命令行下编译通过的程序均为合法的源程序。但即使源程序合法,只要程序执行时有违规行为时,仍被判定为违规。