이 문제에서 제출한 프로그램은 각 테스트 케이스마다 서로 독립된 두 프로세스로 두 번 실행된다. 두 실행 사이에는 첫 번째 실행에서 출력한 정수 하나만 전달된다.
T씨는 자신이 하는 말을 모두 믿어도 된다고 주장한다. 하지만 당신은 T씨의 말 중 일부가 거짓이라는 사실을 알아냈다.
T씨의 발언에는 번부터 번까지 번호가 붙어 있으며, 이 중 정확히 개의 발언이 거짓이다. 거짓인 발언 번호의 집합을 라고 하자.
당신은 를 확인한 뒤 T씨를 믿고 있는 미쿠에게 경고를 전달하려고 한다. 미쿠에게 전달할 수 있는 것은 종이에 적은 정수 하나뿐이며,
을 만족해야 한다.
첫 번째 실행에서 프로그램은 집합 를 입력받고 정수 를 출력한다. 두 번째 실행은 첫 번째 실행과 별개의 새 프로세스이며, 에 관한 상태, 파일, 메모리를 이어받지 않는다. 두 번째 실행에서는 첫 번째 실행이 출력한 만 입력받고, 거짓이라고 판단한 발언 번호들을 출력한다.
두 번째 실행에서 출력한 모든 번호는 반드시 에 포함되어야 한다. 하나라도 에 포함되지 않은 번호를 출력하면 오답이다. 가능한 한 많은 거짓 발언을 항상 알아낼 수 있도록 하여라.
채점
어떤 번호도 잘못 출력하지 않았다고 하자. 모든 테스트 케이스에서 출력한 의 최솟값에 따라 다음과 같이 점수를 받는다.
이상 |
이면 점을 받는다. 출력한 번호 중 하나라도 실제 거짓 발언이 아니거나, 출력 형식이 잘못되면 오답이다.
프로그램은 각 테스트 케이스마다 두 번 실행된다. 입력의 첫 번째 정수는 실행 단계를 나타낸다.
첫 번째 실행에서는 다음 형식으로 입력이 주어진다.
첫 번째 실행에서는 다음 형식으로 정수 하나를 출력한다.
는 을 만족해야 한다. 앞뒤 공백을 제외한 다른 토큰을 출력하면 오답이다.
점수 |
은 서로 다른 거짓 발언의 번호이다.
두 번째 실행에서는 다음 형식으로 입력이 주어진다.
는 같은 테스트 케이스의 첫 번째 실행에서 프로그램이 출력한 정수이다.
두 번째 실행에서는 알아낸 거짓 발언의 개수 과 서로 다른 발언 번호를 다음 형식으로 출력한다.
이면 둘째 줄을 출력하지 않아도 된다. 모든 는 에 포함되어야 한다.
각 실행이 끝나면 프로그램도 종료되어야 한다. 첫 번째 실행에서 만든 파일, 프로세스, 메모리는 두 번째 실행에 전달되지 않는다.