13. Invocation

Polygon 2015. 9. 18. 15:24

Invocation은 countercase를 찾으려는 Stress와는 달리, 이쪽은 실제로 test를 돌려보는 쪽에 가깝습니다. 실제 Time limit과 Memory limit을 가지고, 입력한 testset, validator, main solution, checker를 이용해 solution이 예상한 verdict가 나오는지 확인하는 과정입니다.


Invocation을 돌리려면 우선 Invocation 탭에 들어가 'Want to run solutions?'라는 링크를 누르면 해당 화면이 나옵니다. 이 경우 크게 3가지를 결정해야 합니다.

  • 어떤 test set을 돌릴지를 결정해야 합니다. 한 Invocation 당 한 test set밖에 못 돌리기 때문입니다.

  • 어떤 solution을 돌릴지 결정해야 합니다. 모든 solution을 시험할 필요는 없습니다. 다만 그 solution이 verdict를 만족해야겠지요.

  • 어떤 test를 돌릴지 결정해야 합니다. test set 중에서 sub-task가 있어서 그것만 돌리는 경우도 있기 때문입니다. 이 경우 test 창에서 group으로 해당 test를 묶으면 일일히 test를 선택할 필요 없이 해당하는 group만 바로 선택하면 됩니다.
선택한 다음에 'Run judgement'를 누르면 Invocation이 돌아가기 시작합니다. 여기서 다시 한 번 Solution의 종류(type)을 재고하면 다음과 같습니다.
  • Main correct solution: 일명 'jury's solution'입니다. 이 풀이는 무조건 AC를 내야 합니다.

  • Correct: 이 풀이는 무조건 AC를 내야 합니다.

  • Incorrect: 이 풀이에 대해서 Incovation은 Verdict를 따지지 않습니다.

  • Time limit exceeded: 이 풀이는 AC 또는 TL(Time Limit Exceeded)가 나와야 합니다.

  • Wrong answer: 이 풀이는 AC 또는 WA(Wrong Answer)가 나와야 합니다.

  • Memory limit exceeded: 이 풀이는 AC 또는 ML(Memory Limit Exceeded)가 나와야 합니다.

  • Failed: 이 풀이는 AC 또는 RE(Runtime Error)가 나와야 합니다.
Invocation을 돌리다가 나올 수 있는 다른 Verdict(2글자)는 다음과 같습니다.
  • RJ : Rejected입니다. 어떤 풀이가 예상된 verdict와 달리 나올 경우, 그 이후의 test는 실행되지 않습니다. RJ가 나왔다는 것은 Invocation이 실패했다는 뜻입니다.

  • IL : Idleness Limit Exceeded입니다. 일부 함수들은 입력을 받을 때까지 대기하는 경우가 있습니다(ex. scanf, getch()). 이런 함수들이 호출되지 않고 프로그램이 계속 idle한 상태일 때 이런 verdict가 나옵니다. 사실 이 verdict는 사실상 거의 나타날 일이 없습니다.

  • FL: 뭔 뜻인지는 모르겠지만, 파일 입출력으로 test가 생성되어 있는데 표준 입출력으로 test를 받을 경우 해당하는 verdict가 나옵니다.

  • PE : Presentation Error입니다. 공백 관련 문제가 아니라 int형을 예상했는데 long long int형으로 출력을 했을 때 이 Verdict가 나옵니다.
Invocation을 돌린 예시는 다음과 같습니다.

몇 개의 예시를 보면 다음과 같습니다.

  • 검은색 글씨로 나오는 경우는 '이 solution의 verdict는 신경쓰지 않겠다'는 것을 의미합니다.

  • 파란색 글씨로 나오는 경우는 Correct 이외의 Verdict 중 예상되던 Verdict(ex. 느린 코드면 TL, 속도는 괜찮은데 틀리면 WA)가 나오면 파란색이 됩니다.

  • 초록색 글씨는 Correct를 의미합니다.

  • 여기에는 없지만, 볼드체 쳐진 붉은 글씨는 예상된 Verdict가 나오지 않았다는 것을 의미합니다.

  • 각 경우에 적혀있는 x / y의 숫자는 각각 걸린 시간(ms)과 용량(MB)를 의미합니다.

  • 파란색으로 표시되는 test는 다음과 같은 조건을 만족합니다.

    • 그 solution에 대해서 가장 시간을 많이 소모한 test일 때(실제로는 Time Limit의 2배까지 돌려봅니다)

    • 100ms보다 더 오래 걸린 test일 때

  • 이에 비해, 주황색으로 표시되는 test는 Time Limit 안에 돌아가지는 않았지만 Time Limit의 2배 안에는 성공적으로 수행된 경우입니다.
Invocation은 결국 준비된 test에 대해서 모든 solution들이 예상된 결과를 보이는지 확인하는 마지막 절차라고 볼 수 있습니다.


'Polygon' 카테고리의 다른 글

12. Stress  (0) 2015.08.18
11. Checker  (0) 2015.08.17
10. Solution Files  (0) 2015.08.12
9. Validator  (1) 2015.08.11
8. Tests (2 - Generator with Freemarker)  (0) 2015.08.09
Posted by Evenharder
,