소개
직사각형 정수 배열을 반으로 균등하게 분할하는 프로그램을 작성해야합니다 (이유가 무엇이든). 이 작업은 계산 집약적이지만 운 좋게도 계산을 수행 할 듀얼 코어 머신이 있습니다. 병렬 처리의 이점을 최대화하기 위해 프로그램을 반으로 균등하게 분할하고 각 코어가 하나의 파트 중 하나를 다른 파트와 독립적으로 실행하도록 결정합니다.
입력과 출력
입력 한 내용은, 적어도 크기의 음이 아닌 정수의 장방형 2 차원 어레이 인 1 × 1 임의의 적절한 형식으로 촬영. 이러한 배열 의 분할 은 각 수평 행을 접두사와 접미사 (둘 중 하나는 비어있을 수 있음)로 분할하여 얻습니다. 분할이 유효하려면 두 개의 인접한 행이 동일한 인덱스 또는 인접 인덱스에서 분할되어야합니다. 예를 들어, 배열을 고려하십시오
2 4 5 5 6 3
9 7 1 7 7 0
0 0 3 6 7 8
1 2 4 7 6 1
6 6 8 2 0 0
이것은 유효한 분할입니다 :
2;4 5 5 6 3
;9 7 1 7 7 0
;0 0 3 6 7 8
1;2 4 7 6 1
6 6;8 2 0 0
이것은 또한 유효한 분할입니다.
2 4 5 5 6 3;
9 7 1 7 7;0
0 0 3 6 7;8
1 2 4 7;6 1
6 6 8;2 0 0
이것은 유효한 분할이 아닙니다 :
2 4;5 5 6 3
9 7 1;7 7 0
0;0 3 6 7 8
1 2;4 7 6 1
6 6;8 2 0 0
출력은 최소값이어야합니다.
abs(sum_of_prefixes - sum_of_suffixes)
입력의 모든 유효한 분할 이상.
규칙과 득점
당신은 쓸 것이다 이 개 그들 사이에 공유 코드가 없어야합니다 같은 언어 프로그램 (중 전체 프로그램 또는 기능). 그것들을 P1 과 P2 라고합시다 . 프로그램 P1 은 입력 배열을 받아서 무언가를 출력 합니다 . 프로그램 P2 는 이것을 무언가 입력으로 받아서 입력 배열에 대한 위 작업의 응답을 출력합니다.
점수는 P1 및 P2 의 최대 바이트 수이며 , 점수가 낮을수록 좋습니다.
몇 가지 설명 :
- 두 개의 전체 프로그램, 하나의 함수와 하나의 전체 프로그램 또는 두 개의 함수를 작성할 수 있습니다.
- 두 개의 전체 프로그램의 경우 P1 의 전체 출력 이 Unix 파이프 라인에서와 같이 입력 으로 P2 에 입력됩니다
P1 | P2
. 두 개의 개별 소스 파일에서 컴파일 / 해석 된 경우 프로그램이 올바르게 작동해야합니다. - 두 프로그램 중 하나가 기능인 경우 필요한 상용구 코드를 추가하여 전체 프로그램으로 변환되며 위의 규칙이 적용됩니다. 특히, 두 함수는 공유 보조 함수, 공유 반입 명령문 또는 공유 전역 변수를 사용할 수 없습니다.
테스트 사례
[[1]] -> 1
[[4,5],[8,3]] -> 4
[[8],[11],[8],[10],[4]] -> 1
[[5,7,0,9,11,2,1]] -> 7
[[146,194,71,49],[233,163,172,21],[121,173,14,302],[259,169,26,5],[164,30,108,37],[88,55,15,2]] -> 3
[[138,2,37,2],[168,382,33,77],[31,199,7,15],[192,113,129,15],[172,88,78,169],[28,6,97,197]] -> 7
[[34,173,9,39,91],[169,23,56,74,5],[40,153,80,60,28],[8,34,102,60,32],[103,88,277,4,2]] -> 0
[[65,124,184,141],[71,235,82,51],[78,1,151,201],[12,24,32,278],[38,13,10,128],[9,174,237,113]] -> 2
[[164,187,17,0,277],[108,96,121,263,211],[166,6,57,49,73],[90,186,26,82,138],[173,60,171,265,96]] -> 8