HUST Online Judge FAQ

Q:채점을 위해 사용되는 컴파일러와 각 컴파일러의 옵션은 어떤것입니까?
A:채점 시스템은 Debian Linux에서 구동됩니다. 현재 C/C++ 코드 컴파일을 위해 GNU GCC/G++를 사용하고 있으며, pascal 코드 컴파일을 위해 Free Pascal 을, 그리고 Java 코드 컴파일을 위해 sun-java-jdk1.6를 사용합니다. 컴파일을 위해서 다음과 같은 옵션을 사용합니다:

C: gcc Main.c -o Main -ansi -fno-asm -O2 -Wall -lm --static
C++: g++ Main.c -o Main -ansi -fno-asm -O2 -Wall -lm --static
Pascal: fpc Main.pas -oMain -O1 -Co -Cr -Ct -Ci
Java: javac Main.java

현재 사용되는 각 컴파일러의 버전:
gcc/g++ 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
glibc 2.3.6
Free Pascal Compiler version 2.0.0 [2005/09/09] for i386
Java 1.6.0_06


Q:입력과 출력은 어떻게 받나요?
A:채점을 위해서 입력은 stdin('Standard Input')을 통해 받게 되며, stdout('Standard Output')에 출력하게 됩니다. 자세하게 이야기 하자면, 입력을 위해서는 'scanf(C)/cin(C++)'을, 출력을 위해서 'printf(C)/cout(C++)' 을 사용하게 됩니다
사용자가 작성한 프로그램은 파일을 읽고 쓰는 것이 금지 되어 있으며, 이러한 경우, "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를 이용하여 100번 문제를 짠 예시 코드입니다:

            #include <stdio.h>
            int main(){
                int a,b;
                while(scanf("%d %d",&a, &b) != EOF)
                    printf("%d\n",a+b);
                return 0;
            }
            
PASCAL은 다음과 같이 작성할 수 있습니다.:

            program p1001(Input,Output); 
            var 
            a,b:Integer; 
            begin 
            while not eof(Input) do 
                begin 
                Readln(a,b); 
                Writeln(a+b); 
                end; 
            end.
            


마지막으로 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:제가 테스트 해보았을 떄는 잘 돌아가는데 결과로 Compile Error가 뜹니다. 왜그럴까요?
A:일반적으로 MS-VC++를 사용하였을 경우에 발생하며, GNU와 MS-VC++에서 생기는 차이점에 의하여 발생합니다. 예를 들면 다음과 같습니다:

Q:채점 결과의 뜻은 무엇인가요?
A:채점결과들의 의미는 다음과 같습니다:

Pending : 채점이 밀려서 아직 채점이 완료 되지 않은 대기 상태. 일반적으로 1분 이내에 채점이 됩니다.

Pending Rejudge: 테스트 데이터를 새로이 고치거나 했을 경우, 해당 제출 코드를 다시 채점하게 되어 대기 상태로 들어가는 경우.

Compiling : 채점을 하기 위해 컴파일 하는 중에 나타납니다.

Running & Judging: 채점이 진행되고 있음을 의미합니다.

Accepted : 제출한 프로그램이 모든 테스트 데이터를 통과했음을 뜻합니다.

Presentation Error : 출력 결과가 테스트 데이터와 유사하나, 공백, 빈 줄과 같은 사소한 문제로 인해 출력 결과가 일치하지 않는 경우입니다.

Wrong Answer : 출력 결과가 테스트 데이터와 다른 경우 입니다.

Time Limit Exceeded : 제출한 프로그램이 제한된 시간이내에 끝나지 않은 경우를 뜻합니다.

Memory Limit Exceeded : 제출한 프로그램이 허용된 메모리보다 많은 메모리를 사용했을 경우를 뜻합니다.

Output Limit Exceeded: 예상하는 보다 많은 출력이 발생한 경우 입니다. 일반적으로 프로그램이 무한 루프에 빠졌을 경우에 일어납니다. 현재 채점 시스템에서 출력 제한은 1메가 바이트로 제한됩니다.

Runtime Error : 실행 도중에 'segmentation fault','floating point exception','used forbidden functions', 'tried to access forbidden memories' 등의 에러가 발생하여서 실행도중에 프로그램이 종료된 경우 입니다.

Compile Error : 컴파일러가 제출한 소스코드를 컴파일 하지 못한 경우입니다. 물론 경고 메시지(warning message)는 에러 메시지로 간주하지 않습니다. 채점 결과를 클릭하면 실제 에러 메시지를 볼 수 있습니다.


Q:온라인 대회에 어떻게 참가하죠?
A:본 시스템에서 연습문제들을 제출 할 수 있게 되었습니까? 가능하다면 당신이 사용하는 계정이 온라인 대회에 사용하게 될 계정이 됩니다. 다시 말해서, 그 계정을 이용하여 대회에 참가하면 됩니다. 만약 참가 할 수 없다면, register 메뉴에서 계정을 생성하세요.


질문이나 제안은 ZJICM ACM BBS에 해주시길 바랍니다.

ascode.org V1.9.9.0