카드 게임
면접 대비시간 제한2초메모리 제한512 MB
짝수 개의 카드가 일렬로 놓여 있고 두 사람이 양 끝에서 번갈아 가져간다. 먼저 하는 사람은 자신이 가져간 정수의 합을 최대화하려 하고 상대는 그 합을 최소화하려 할 때, 먼저 하는 사람이 보장할 수 있는 최대 점수를 구한다.
문제
알베르토와 완데를레이가 카드 게임을 한다. 정수가 하나씩 적힌 카드가 짝수 개 있고, 이 카드는 탁자 위에 한 줄로 나란히 놓여 하나의 수열을 이룬다. 먼저 알베르토가 양쪽 끝에 있는 두 카드 중 하나를 가져간다. 이어서 완데를레이가 남은 카드의 양쪽 끝 중 하나를 가져가고, 다시 알베르토가 끝에 있는 카드 하나를 가져간다. 이렇게 번갈아 진행하다가 완데를레이가 마지막 카드를 가져가면 게임이 끝난다.
먼저 시작하는 알베르토는 자신이 가져간 카드에 적힌 수의 합, 즉 자신의 점수를 최대로 만들려고 한다. 두 번째로 두는 완데를레이는 알베르토를 방해해서 알베르토의 점수를 최소로 만들려고 한다. 두 사람 모두 각자의 목표에 맞게 최선으로 둔다.
카드의 수열이 주어졌을 때, 알베르토가 얻을 수 있는 점수의 최댓값을 구하는 프로그램을 작성하라.
입력
입력은 여러 개의 테스트 케이스로 이루어지고, 각 테스트 케이스는 두 줄이다. 첫째 줄에는 탁자 위에 놓인 카드의 개수 이 주어진다. 둘째 줄에는 카드에 적힌 개의 정수가 놓인 순서대로 주어진다. 테스트 케이스는 입력의 끝까지 이어진다.
제약
- 은 짝수다
- 각 카드에 적힌 정수는 32비트 부호 있는 정수로 나타낼 수 있다
- 테스트 케이스는 20개 이하이고, 모든 테스트 케이스의 을 더한 값은 이하다
출력
각 테스트 케이스마다 한 줄에 정수 하나를 출력한다. 그 정수는 알베르토가 얻을 수 있는 점수의 최댓값이다.