아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

게임 예측

시간 제한1초메모리 제한512 MB

요약
각 부분 배열 질의마다 양 끝에서 하나씩 가져가는 게임을 두 사람이 최적으로 둘 때 각자의 최종 점수를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 게임 이론, 그리디, 수학
정답자
아직 제출이 없습니다

문제

Sunset과 Elephant가 수열 b1,b2,…,bmb_1, b_2, \ldots, b_m에서 게임을 한다. 두 사람은 번갈아 움직이며 Sunset이 먼저 시작한다. 각 차례에서 현재 차례인 사람은 수열의 맨 앞이나 맨 뒤에 있는 값을 하나 골라 자신의 점수에 더하고 그 값을 수열에서 제거한다. 수열이 비면 게임이 끝난다. 두 사람은 모두 자신의 점수를 최대로 만들고자 하며 최선의 전략으로 게임을 한다.

수열 a1,a2,…,ana_1, a_2, \ldots, a_n과 qq개의 질의가 주어진다. ii번째 질의에서는 두 정수 lil_i와 rir_i가 주어진다.

bb의 초기 상태를 ali,ali+1,…,aria_{l_i}, a_{l_i+1}, \ldots, a_{r_i}로 두었을 때 게임의 최종 결과를 구하는 프로그램을 작성하라. 이때 m=ri−li+1m = r_i - l_i + 1이고, 1≤j≤m1 \le j \le m인 모든 jj에 대해 bj=ali+j−1b_j = a_{l_i+j-1}이다.

입력

각 테스트에는 테스트 케이스가 하나만 주어진다.

테스트 케이스의 첫 줄에는 수열의 길이와 질의의 수를 나타내는 두 정수 nn과 qq가 주어진다. (1≤n≤100 0001 \le n \le 100\,000, 1≤q≤200 0001 \le q \le 200\,000)

둘째 줄에는 nn개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다. (1≤ai≤1091 \le a_i \le 10^9)

다음 qq개의 줄에는 각각 질의를 나타내는 두 정수 lil_i와 rir_i가 주어진다. (1≤li≤ri≤n1 \le l_i \le r_i \le n)

모든 aia_i의 값은 [1,109][1, 10^9] 범위의 정수 중에서 균등한 확률로 무작위로 선택된다. 이 무작위성 조건은 예제 테스트 케이스에는 적용되지 않지만, 제출한 풀이는 예제도 통과해야 한다.

출력

각 질의마다 Sunset의 최종 점수 SS와 Elephant의 최종 점수 EE를 한 줄에 두 정수로 출력한다.

예제1

  1. 예제 1

    입력
    5 4
    7 9 3 5 2
    1 5
    3 5
    2 4
    1 2
    
    예상 출력
    12 14
    5 5
    12 5
    9 7