명의 선수가 좌우 일렬로 서 있다. 왼쪽에서 번째 선수의 실력은 이다.
당신은 이 선수 중에서 좌우로 연속한 선수들을 한 명 이상 선발하여 실력의 합이 가장 큰 팀을 구성하려고 한다.
당신은 선수들을 선발하기 직전에 단 한 번 좌우로 연속한 선수들의 순서를 뒤집을 수 있다. 순서를 뒤집는다는 것의 의미는 이상 이하인 정수 와 를 정해서 번째 선수부터 번째 선수까지 총 명의 선수들의 좌우 순서가 반대가 되도록 하는 것이다. 만약 인 경우, 뒤집는 것은 아무 효과가 없다. 즉, 뒤집지 않는 것과 같은 효과이다.
예를 들어, 이고 선수들의 실력이 순서대로 이라고 하자. 이 경우, , 로 정해서 뒤집기를 하고 나면 선수들의 실력은 왼쪽부터 이 되고, 이때 실력의 합이 가장 큰 팀을 구성하는 방법은 두 번째부터 세 번째까지의 선수들을 선발하는 것이다. 이 경우, 실력의 합은 이다.
입력 형식
첫 줄에 선수들의 수를 나타내는 정수 이 주어진다. ()
두 번째 줄에 선수들의 실력을 나타내는 개의 정수 이 공백으로 구분되어 주어진다. ()
출력 형식
좌우로 연속한 선수들의 순서를 적절히 뒤집어 실력의 합이 가장 큰 팀을 구성할 때, 그 팀의 실력 합을 나타내는 정수를 출력한다.
예제 1
입력
4 2 -1 3 -1
출력
5
예제 2
입력
3 -1 3 -1
출력
3
예제 3
입력
5 2 -1 3 -2 5
출력
9
예제 4
입력
4 -2 -1 -3 -1
출력
-1
예제 설명
예제 2에서, 뒤집는 방법과 상관없이 실력이 인 선수 한 명을 선발하여 팀을 구성해야 팀의 실력 합이 최대가 된다.
예제 3에서, , 로 뒤집기를 하여, 선수들의 실력이 왼쪽부터 가 되도록 한 후, 첫 번째부터 네 번째까지의 선수들을 선발하여 팀을 구성하면 실력의 합이 가 된다.
예제 4에서, 뒤집는 방법과 상관없이 실력이 인 선수 한 명을 선발하여 팀을 구성해야 팀의 실력 합이 최대가 된다.
채점 방식
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 29점
종류 2: 23점
종류 3: 48점
추가적인 제한 조건이 없음.
해설
배열의 번째부터 번째까지를 뒤집는다고 하면 번째에서 끝나는 가장 큰 합과 번째에서 끝나는 가장 큰 합이 만나도록 하는 것이 최선입니다. 단, 이 경우 번째에서 끝나는 합은 번째 이후에서 시작해야 합니다.
더 쉬운 방법은 다음과 같습니다.
왼쪽에서 오른쪽으로 가면서 각 번째에서 끝나는 가장 큰 합을 찾고, 오른쪽에서 왼쪽으로 가면서 번째에서 시작하는 가장 큰 합을 모두 계산합니다. 이제, 각 번째에서 끝나는 가장 큰 합에 대해 자신의 오른쪽에 있는 모든 에서 시작하는 가장 큰 합을 찾아 더하면 됩니다.