나만의 농장 운영하기: 밭 업그레이드

NYPC 2016 · 본선

여러분에게 직사각형 모양의 땅이 주어진다. 땅에 미리 만들어져 있는 밭과 일꾼의 위치가 지도의 형태로 입력된다. 이 땅에 밭을 만들고 밭에 작물을 심어 수확하면서 농장을 운영해나가야 한다.

목표

이 문제는 2단계에 해당하는 문제이다. 2단계에선 밭을 업그레이드 할 수 있게 된다.

밭을 업그레이드 하면 해당 밭의 레벨이 올라가고, 특정 밭 레벨 이상에서만 심을 수 있는 작물이 존재한다.

밭을 업그레이드 하여 레벨 제한이 가장 높은 작물을 수확해보자.

구성

지도에는 다음의 것들이 표시되어있다:

일꾼에 명령을 내려 밭을 만들거나 작물을 심고 수확할 수 있다. 명령을 수행하거나 작물이 성장하는 데는 시간이 필요하고, 이 게임에서 시간의 단위는 턴으로 표시된다. 입력이 주어진 시점에서 00턴으로 시작된다. 작물을 심거나 수확하는 데는 11턴이 소요되고 그 외의 경우는 입력으로 주어진다. 일꾼의 시작 위치는 입력으로 주어진다.

2단계 문제에서 일꾼이 할 수 있는 행동은 다음과 같다. (2단계에 추가된 행동부터 설명함)

일꾼에게 명령을 내리는 방법은 출력 양식을 참고하라. 명령을 수행하는 중에는 다른 명령을 수행할 수 없다. 수행할 수 없는 명령을 내리거나 잘못된 명령을 내리는 경우 오답으로 처리된다.

입력

첫 줄에는 초기 자금 MM밭의 최고 레벨 LL이 주어진다. (2L52 \le L \le 5)

다음 줄에 밭을 만드는데 소요되는 턴과 비용이 주어진다. 새로 만들어진 밭은 항상 11레벨이다.

그 다음 L1L-1줄에 거쳐 순서대로 11에서 22레벨, 22에서 33레벨, \cdots, L1L-1에서 LL레벨로 업그레이드할 때 소요되는 턴과 비용이 주어진다.

그 다음 줄에 일꾼의 시작 가로 위치 XX, 세로 위치 YY가 주어진다. 좌표는 지도의 왼쪽 제일 위 칸이 (1,1)(1, 1)에 해당한다.

그 다음 줄에는 지도의 가로 크기 WW와 세로 크기 HH가 주어지고 다음 HH줄에 거쳐 지도가 주어진다. (1W1001 \le W \le 100, 1H1001 \le H \le 100)

그 다음 줄에 심을 수 있는 작물의 종류 개수 NN이 주어진다. (N20N \le 20)

이어서 각 작물에 대한 입력이 NN줄 들어온다.

작물별로 이름, 심을 수 있는 최소 밭 레벨, 수확할 수 있을 때까지 걸리는 턴, 심을 때 필요한 비용, 수확할 때 얻을 수 있는 금액이 주어진다. 작물의 이름은 띄어쓰기 없이 영어 소문자로만 이루어져 있고, 2020자를 넘지않는다.

자금을 저장할 때 00 이상 1010억 이하의 정수를 저장할 수 있는 자료형을 사용하면 문제를 해결하는데 충분할 것이다.

입력에는 밭 레벨 제한이 LL인 작물이 하나 이상 존재한다. 항상 목표를 달성할 수 있는 입력만 주어진다.

출력

일꾼에게 특정 턴에 어떤 명령을 내릴지 턴 명령 명령인자의 형태로 한 줄에 하나씩 출력한다. 턴은 반드시 증가하는 순서로 출력하여야 한다.

출력된 명령을 수행하면 밭 레벨 제한이 LL 인 작물을 하나 이상 수확하도록 해야 한다.

수행할 수 없는 명령을 내리거나 잘못된 명령을 내리는 경우 오답으로 처리된다.

예제

입력

100 3 5 50 5 100 5 150 3 2 3 2 ... ... 2 berry 1 5 50 1000 watermelon 3 50 1000 10000

출력

0 plow 5 plant berry 11 harvest 12 plant berry 18 harvest 19 upgrade 24 upgrade 29 plant watermelon 80 harvest

처음에 100100원을 가지고 시작한다.

밭의 최고 레벨은 33이다.

새 밭을 만들려면 55턴, 5050원이 필요하다.

밭을 11레벨에서 22레벨로 업그레이드하려면 55턴, 100100원이 필요하다.

밭을 22레벨에서 33레벨로 업그레이드하려면 55턴, 150150원이 필요하다.

일꾼은 (3,2)(3, 2) 위치에서 시작한다.

지도의 크기는 가로 33, 세로 22 이다. 밭이 없는 지도가 주어졌다.

심을 수 있는 작물 22개가 주어진다:

하나씩 살펴보자. 현재 위치에 새 밭을 만들었다. (남은 자금 5050원)

berry를 심은 후 (남은 자금 00원) 수확했다. (남은 자금 10001\,000원)

한 번 더 심은 후 수확하여 남은 자금을 19501\,950원을 만들었다.

밭을 11레벨에서 22레벨로 업그레이드 했다. (남은 자금 18501\,850원)

밭을 22레벨에서 33레벨로 업그레이드 했다. (남은 자금 17001\,700원)

watermelon을 심고 (남은 자금 700700원) 기다린 후 수확했다. (1070010\,700원)

33레벨 작물을 수확했으므로 문제의 목표를 완수했다.

채점 규칙

모든 숨겨진 입력 데이터에 대해 정답이면 만점을 주고, 하나라도 틀리면 점수를 주지 않는다.