페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
1000
ms
메모리 제한
1024
MB
당신은 로봇의 비전 프로그램을 구현하고 있다. 로봇이 찍는 흑백 사진은 픽셀 격자이며 행은 부터 , 열은 부터 까지 번호가 붙는다. 각 사진에는 검은 픽셀이 정확히 두 개 있고 나머지는 흰색이다.
양의 정수 가 주어진다. 두 검은 픽셀 과 사이의 거리를 로 정의할 때, 이 거리가 정확히 인지 판별하는 로봇 프로그램을 만들어야 한다.
로봇 메모리는 부터 번호가 붙은 충분히 큰 셀 배열이다. 각 셀은 한 번 정해진 또는 을 저장한다. 사진은 행 순서대로 번부터 번 셀에 저장된다. 픽셀 가 검으면 셀 의 값은 , 아니면 이다.
로봇 프로그램은 번부터 차례로 실행되는 명령의 수열이다. 명령 의 출력은 셀 에 저장되며, 입력으로 픽셀 셀 또는 이전 명령의 출력만 사용할 수 있다. 명령 종류는 다음 네 가지다.
NOT: 입력 하나가 이면 , 아니면 을 출력한다.AND: 모든 입력이 일 때만 을 출력한다.OR: 적어도 한 입력이 이면 을 출력한다.XOR: 값이 인 입력의 수가 홀수일 때만 을 출력한다.마지막 명령은 두 검은 픽셀의 거리가 일 때만 을 출력해야 한다.
다음 함수를 구현해야 한다.
void construct_network(int H, int W, int K)
이 함수는 다음 함수들을 한 번 이상 호출하여 처음에는 비어 있는 프로그램에 명령을 추가해야 한다.
int add_not(int N) int add_and(vector<int> Ns) int add_or(vector<int> Ns) int add_xor(vector<int> Ns)
add_not의 은 입력 셀 번호다.그레이더는 다음 오류를 보고할 수 있다.
Instruction with no inputs: add_and, add_or, add_xor에 빈 배열을 전달했다.Invalid index: 올바르지 않은 셀 번호를 전달했다.Too many instructions: 명령을 개보다 많이 추가하려 했다.Too many inputs: 읽는 입력의 총수가 을 넘었다., , 이면 두 검은 픽셀 사이의 거리가 인 사진은 두 가지뿐이다.

다음과 같이 프로그램을 만들 수 있다.
add_and([0,5])를 호출해 첫째 경우일 때만 인 값을 셀 에 저장한다.add_and([2,3])을 호출해 둘째 경우일 때만 인 값을 셀 에 저장한다.add_or([6,7])을 호출해 두 경우 중 하나일 때만 을 출력한다.log.txt에도 기록한다.2 3 3
0 0 0 1
0 0 0 2
0 0 1 0
0 0 1 1
0 0 1 2
0 1 0 2
0 1 1 0
0 1 1 1
0 1 1 2
0 2 1 0
0 2 1 1
0 2 1 2
1 0 1 1
1 0 1 2
1 1 1 2
-1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
International Olympiad in Informatics (IOI) 2019, official task package and official Korean statement.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.