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