Lavida FAQ

Q:채점을 위해 사용되는 컴파일러와 각 컴파일러의 옵션은 어떤것입니까?
A:채점 시스템은 Debian Linux에서 구동됩니다. 현재 C/C++ 코드 컴파일을 위해 GNU GCC/G++를 사용하고 있으며, pascal 코드 컴파일을 위해 Free Pascal 을, 그리고 Java 코드 컴파일을 위해 openjdk-7-jdk를 사용합니다. 컴파일을 위해서 다음과 같은 옵션을 사용합니다:
C: gcc Main.c -o Main -fno-asm -Wall -lm --static -std=c99 -DONLINE_JUDGE
C++: g++ Main.cc -o Main -fno-asm -Wall -lm --static -std=c++11 -DONLINE_JUDGE
Pascal: fpc Main.pas -oMain -O1 -Co -Cr -Ct -Ci
Java: javac -J-Xms32m -J-Xmx256m Main.java
*Java has 2 more seconds and 512M more memory when running and judging.
현재 사용되는 각 컴파일러의 버전:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0
glibc 2.3.6
Free Pascal Compiler version 2.4.0-2 [2010/03/06] for i386
java version "1.7"

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:채점결과들의 의미는 다음과 같습니다:
채점결과 설명
Compile Error
컴파일러가 제출한 소스코드를 컴파일 하지 못한 경우입니다. 물론 경고 메시지(warning message)는 에러 메시지로 간주하지 않습니다. 채점 결과를 클릭하면 실제 에러 메시지를 볼 수 있습니 다.
Accepted
제출한 프로그램이 모든 테스트 데이터를 통과했음을 뜻합니다.
Wrong Answer
출력 결과가 테스트 데이터와 다른 경우 입니다.
Time Limit Exceeded
제출한 프로그램이 제한된 시간이내에 끝나지 않은 경우를 뜻합니다.

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:How to attend Online Contests?
A:Can you submit programs for any practice problems on this Online Judge? If you can, then that is the account you use in an online contest. If you can't, then please register an id with password first.


Any questions/suggestions please post to HUSTOJ BBS

HUSTOJ 16.12.02