시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
A×1 크기의 상자와 B×1 크기의 상자가 하나씩 있다. 첫 번째 상자에는 A개의 구슬이, 두 번째 상자에는 B개의 구슬이 아래에서 위로 쌓여 있다. 각 구슬에는 1부터 N까지의 정수 하나가 적혀 있다.
상자의 맨 아래에는 구멍이 있어서 현재 가장 아래에 있는 구슬의 번호를 볼 수 있고, 그 구슬을 꺼낼 수 있다. 다음 세 가지 작업 중 하나를 반복해서 수행할 수 있다.
총점은 0에서 시작한다. 두 상자의 모든 구슬을 꺼낼 때까지 작업을 수행할 때, 얻을 수 있는 최대 총점과 그때의 작업 순서를 구하라.
점수표에서 행은 첫 번째 상자에서 꺼낸 구슬의 번호, 열은 두 번째 상자에서 꺼낸 구슬의 번호를 뜻한다.
첫째 줄에 세 정수 N, A, B가 주어진다. 모든 값은 1 이상 1,000 이하이다.
다음 N개의 줄에는 점수표가 주어지며, 각 줄마다 N개의 정수가 주어진다. 점수표의 각 값은 -1,000 이상 1,000 이하이다.
그다음 줄에는 첫 번째 상자에 들어 있는 A개의 구슬 번호가 아래쪽 구슬부터 순서대로 주어진다. 마지막 줄에는 두 번째 상자에 들어 있는 B개의 구슬 번호가 아래쪽 구슬부터 순서대로 주어진다.
첫째 줄에 얻을 수 있는 최대 총점을 출력한다.
둘째 줄에는 그 최대 총점을 만들 수 있는 작업 번호를 수행 순서대로 공백으로 구분해 출력한다.