과일 게임
시간 제한4초메모리 제한1024 MB
1부터 10까지의 값을 갖는 변경 가능한 수열에서, 같은 값이 인접한 두 원소를 합치는 연산을 반복해 부분 수열에서 얻을 수 있는 가장 큰 과일 번호를 구한다.
문제
과일 게임은 여러 가지 종류의 과일들을 합쳐 크기가 큰 종류의 과일을 만드는 게임이다. 과일 게임의 게임판은 수열 로 표현할 수 있다. 이 때 각 수는 과일의 종류에 따른 번호를 나타내며, 번호가 클수록 과일의 크기가 크다는 것을 의미한다.
이 때 플레이어는 종류가 같으며 인접한 두 과일을 합쳐서 크기가 큰 과일을 만들 수 있는 합치기 연산을 수행할 수 있다. 이 연산은 다음과 같이 정의된다.
합치기: 로 표현되는 게임판에서 정수 를 골라, 을 만족한다면 게임판을 로 바꾼다.
플레이어의 목표는 초기 게임판이 주어지면 합치기 연산을 회 이상 사용하여 크기가 큰 과일을 만드는 것이다.
예를 들어서 게임판이 인 경우, 이기 때문에 을 선택하여 합치기 연산을 수행하면 게임판이 로 바뀌게 된다. 또 이기 때문에 을 선택하여 합치기 연산을 수행하면 게임판이 로 바뀌게 된다. 마지막으로 이기 때문에 을 선택하여 합치기 연산을 수행하면 게임판이 로 바뀌게 된다. 이렇게 하면 번호가 인 과일을 만들 수 있고, 이것이 얻을 수 있는 가장 큰 과일의 번호이다.
여러분에게 길이 의 수열 가 주어진다. 이 때 의 원소는 중간에 변경될 수 있으며 이 변화는 누적된다. 여러분은 을 만족하는 정수 순서쌍 이 주어질 때마다 로 표현되는 게임판에서 얻을 수 있는 가장 큰 과일의 번호를 구하는 프로그램을 작성해야 한다. 수열의 원소가 변하거나 순서쌍이 주어지는 횟수는 총 번이다.
제한
- 모든 에 대해 ()
- 모든
play_game호출에 대해 - 모든
update_game호출에 대해 ,
예제
이 문제는 공개된 예제가 없습니다.