도미노 게임
시간 제한1초메모리 제한64 MB
도미노 n개의 위치가 주어질 때, 한 번의 이동으로 연속한 도미노 사슬이 쓰러지는 게임에서 후공이 이기도록 하는 높이 h'를 [hmin,hmax]에서 골라 최솟값을 구하거나, 없으면 -1을 출력한다.
문제
길이가 같은 개의 도미노가 일직선으로 놓여 있다. 도미노의 높이는 이고 를 만족한다. 번째 도미노는 위치 에 놓여 있다.
Lobster와 Mobster는 다음 게임을 한다. 두 사람은 번갈아 가며 도미노를 넘어뜨린다. 자기 차례가 된 사람은 도미노 하나를 골라 왼쪽이나 오른쪽으로 넘어뜨린다. 넘어진 도미노는 다른 도미노를 연쇄적으로 넘어뜨릴 수 있다.
한 도미노가 다른 도미노를 넘어뜨릴 수 있는 것은 두 도미노 사이의 거리, 즉 위치의 차가 보다 엄격히 작을 때뿐이다. 예를 들어 도미노 의 위치가 이고 도미노 보다 오른쪽에 있는 도미노 의 위치가 이며 이면, 오른쪽으로 넘어뜨린 도미노 는 도미노 도 넘어뜨린다. 그러면 도미노 가 다음 도미노를 넘어뜨릴 수 있고, 연쇄의 마지막 도미노가 다음 도미노에 닿지 못할 때까지 이어진다.
모든 도미노가 넘어지면 게임이 끝난다. 마지막 도미노를 넘어뜨린 사람이 이기고, 자기 차례에 넘어뜨릴 도미노가 없어서 넘어뜨리지 못한 사람이 진다.
Lobster가 먼저 두기 때문에 Lobster가 유리하다. 그래서 게임을 시작하기 전에 Mobster는 마법 주문을 사용해 모든 도미노의 높이를 에서 Mobster가 범위에서 고른 임의의 수 으로 바꿀 수 있다.
두 사람이 최적으로 플레이할 때, Mobster가 승리하게 되는 도미노 높이 의 최솟값을 구하라. 어떤 으로도 Mobster가 이길 수 없다면 그 사실을 판정하라.
입력
첫째 줄에 정수 , , 가 주어진다. (, )
둘째 줄에 개의 정수가 주어진다. 번째 수는 번째 도미노의 위치 이다. () 모든 도미노의 위치는 서로 다르다.
출력
Mobster가 승리하게 되는 최소 높이 을 출력한다. 범위의 어떤 에 대해서도 Mobster가 진다면 "-1"을 출력한다.