Xidian Programming Contest Online Judge Online Judge FAQ

Q:这个在线裁判系统使用什么样的编译器和编译选项?
A:系统运行于Debian/Ubuntu Linux. 使用GNU GCC/G++ 作为C/C++编译器,用 OpenJDK 17 编译 Java. 对应的编译选项如下:

C: gcc -pipe -std=c17 -O2 main.c -o main -lm -fdiagnostics-color=always -fmax-errors=256
C++: g++ -pipe -std=c++17 -O2 main.cc -o main -fdiagnostics-color=always -fmax-errors=256
Java: 编译:javac -encoding UTF-8 -sourcepath . -d . Main.java
运行:java -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xms%m -Xmx%m Main
%m 会被替换为题目内存限制。

所有语言的时间和内存限制都相同。

编译和运行环境版本为(系统可能升级软件包版本,这里仅供参考):
gcc 13.2.0
glibc 2.39
openjdk 17.0.12


Q:程序怎样取得输入、进行输出?
A:你的程序应该从标准输入 stdin('Standard Input')获取输出 并将结果输出到标准输出 stdout('Standard Output').例如,在C语言可以使用 'scanf' ,在C++可以使用'cin' 进行输入;在C使用 'printf' ,在C++使用'cout'进行输出.

用户程序不允许直接读写文件, 如果这样做可能会判为运行时错误 "Runtime Error"。

下面是 1000 题的参考答案

C++:


#include <iostream>
using namespace std;
int main(){
    int a,b;
    while(cin >> a >> b)
        cout << a+b << endl;
	return 0;
}
C:

#include <stdio.h>
int main(){
    int a,b;
    while(scanf("%d %d",&a, &b) != EOF)
        printf("%d\n",a+b);
	return 0;
}
Java:

import java.util.*;
public class Main{
	public static void main(String args[]){
		Scanner cin = new Scanner(System.in);
		int a, b;
		while (cin.hasNext()){
			a = cin.nextInt(); b = cin.nextInt();
			System.out.println(a + b);
		}
	}
}

Q:为什么我的程序在自己的电脑上正常编译,而系统告诉我编译错误!
A:GCC的编译标准与VC6有些不同,更加符合c/c++标准:

Q:系统返回信息都是什么意思?
A:详见下述:

Pending : 系统忙,你的答案在排队等待.

Pending Rejudge: 因为数据更新或其他原因,系统将重新判你的答案.

Compiling : 正在编译.

Running & Judging: 正在运行和判断.

Accepted : 程序通过!

Presentation Error : 答案基本正确,但是格式不对。

Wrong Answer : 答案不对,仅仅通过样例数据的测试并不一定是正确答案,一定还有你没想到的地方.

Time Limit Exceeded : 运行超出时间限制,检查下是否有死循环,或者应该有更快的计算方法。

Output Limit Exceeded: 输出超过限制,你的输出比正确答案长了两倍.

Runtime Error : 运行时错误,如使用的内存超过题目限制,非法的内存访问,数组越界,指针漂移,调用禁用的系统函数等。我们由于一些原因不提供运行错误的更多细节。

Compile Error : 编译错误,请点击后获得编译器的详细输出。


Q:如何参加在线比赛?
A:注册 一个帐号,然后就可以练习,点击比赛列表Contests可以看到正在进行的比赛并参加。


其他问题请访问Xidian Programming Contest Online Judge论坛系统

Xidian Programming Contest Online Judge R1981+