SUNGIL-OJ FAQ
이 채점시스템에서 사용하는 코드 컴파일 옵션은?
이 채점시스템은 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 코드를 실행하고 채점하는 경우 +2초, +512MB 가 추가됩니다.
컴파일러 버전은 다음과 같습니다.
gcc gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
javac javac 11.0.25
python Python 3.8.10
코드 작성시 데이터 입출력은 어떻게 하나요?
stdin('표준입력')에서 읽고, stdout('표준출력')으로 출력해야합니다. 예를 들어, C언어에서는 'scanf', C++ 언어에서는 'cin' 을 이용해서 stdin(입력)을 읽어들입니다. 또한, C언어에서는 'printf', C++언어에서는 'cout'을 이용해 stdout(출력)으로 출력할 수 있습니다.
파일 입출력을 사용한 코드를 제출하는 경우에는 "Runtime Error(실행 중 에러)" 메시지를 받게 됩니다.
컴파일 에러는 언제 발생하나요?!
GNU 와 MS-VC++ 는 다음과 같이 다릅니다.
  • main 함수의 데이터형은 반드시 int 이어야 합니다. void main 으로 작성한 경우 Compile Error 메시지를 받게 됩니다.
  • i 변수가 "for(int i=0...){...}" 와 같이 선언되어있는 상태인데 for 코드블록 밖에서 참조되는 경우 Compile Error 메시지를 받게 됩니다.
  • itoa 함수는 ANSI 표준 함수가 아닙니다.
  • VC 에서 사용되는 __int64 데이터형도 ANSI 표준이 아닙니다. 따라서, 64비트 정수 데이터형을 위해서는 long long 을 사용해야합니다.
    MSVC6.0 를 위해서 #define __int64 long long 와 같은 전처리 코드를 사용할 수도 있습니다.
채점 코드 제출 후 받게 되는 메시지들은 어떤 의미인가요?
채점 코드 제출 후 받게 되는 메시지들의 의미는 다음과 같습니다
채점 대기중 코드가 제출되고 채점을 기다리고 있는 상태입니다. 대부분의 경우 조금만 기다리면 채점이 진행됩니다.
재채점 대기중 채점 데이터가 갱신되어 재채점을 기다리고 있는 상태입니다.
컴파일중 제출된 코드를 컴파일 중이라는 의미입니다.
채점중 채점이 진행되고 있는 상태라는 의미입니다.
모두 맞음 모든 채점 데이터에 대해서 정확한 답을 출력했다는 의미입니다.
출력형식 다름 출력된 결과가 문제에서 출력해야하는 출력형식과 다르게 출력되었다는 의미입니다. 문제의 출력형식에서 요구하는 형식과 똑같아야 합니다. 답 출력 후 출력형식에는 없는 공백문자나 줄 바꿈이 더 출력되지는 않았는지 확인해 보아야 합니다.
틀림 틀린 답을 출력한 것을 의미합니다. 채점 시스템에 등록하는 채점 데이터들은 외부로 공개하지 않는 것이 일반적입니다. 제출한 코드가 틀린 답을 출력하는 경우가 어떤 경우일지 더 생각해 보아야 합니다.
시간제한 초과 제한시간 이내에 답을 출력하지 못했다는 것을 의미합니다. 좀 더 빠르면서도 정확한 결과를 출력하도록 소스 코드를 수정해야합니다.
메모리제한 초과 제출한 프로그램이 제한된 메모리용량보다 더 많은 기억공간을 사용했다는 것을 의미합니다. 일반적으로는 메모리를 더 적게 사용하는 코드로 수정해야합니다.
출력제한 초과 제출한 프로그램이 제한된 출력량 이상으로 결과를 출력했다는 것을 의미합니다. 대부분의 경우 무한 반복 실행 구조에 의해 발생합니다. 채점 시스템의 출력 제한 바이트 수는 1M bytes 입니다.
실행중 에러 제출한 프로그램이 실행되는 도중에 오류가 발생했다는 것을 의미합니다. 예를 들어, 'segmentation fault(허용되지 않는 메모리 영역에 접근하는 경우: 배열 인덱스 초과 등)','floating point exception(실수 계산 예외: 0 으로 나누는 등)','used forbidden functions(제한된 함수를 사용한 경우: 파일 처리 함수 등이 사용된 경우 등)', 'tried to access forbidden memories(허용되지 않는 시스템 메모리 영역 등에 접근하는 경우 등)' 등에 의해 발생합니다.
컴파일 에러 제출한 소스코드를 ANSI 표준(gcc/g++/gpc) 컴파일러로 컴파일하지 못했다는 것을 의미합니다. 컴파일 오류 메시지가 아닌 오류 경고(warning)는 이 메시지를 출력하지 않습니다. 메시지 부분을 누르면 컴파일 오류 메시지를 확인할 수도 있습니다.
온라인 대회(Online Contests)는 어떻게 참가하나요?
먼저 회원가입 을 통해 계정을 만들어야 온라인 대회에 참여할 수 있게 됩니다.