게임

각 시작 크기 P마다 두 명이 번갈아 버퍼에서 수를 고르고 이후 원소가 버퍼를 채우며, 앨리스 점수에서 밥 점수를 뺀 값을 구한다.

보통7그리디정렬게임 이론누적 합아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

Alice와 Bob이 다음 게임을 한다.

11부터 NN까지 번호가 매겨진 NN개의 양의 정수 수열이 주어진다. 각 원소는 NN 이하이며 같은 값이 여러 번 나올 수 있다. 게임이 시작되면 수열의 앞 PP개 원소로 다중집합 SS를 만든다. Alice가 먼저 움직이며 두 사람은 번갈아 둔다. 각 차례는 다음과 같이 진행된다.

  1. 차례인 사람은 SS에서 수 하나를 골라 꺼내고 그 값을 자신의 점수에 더한다. 두 사람의 점수는 처음에 모두 00이다.
  2. 수열에 아직 들어오지 않은 수가 남았다면 그중 가장 앞선 수 하나를 SS에 넣는다. 즉 첫 번째로 꺼낸 뒤에는 P+1P+1번 원소가 들어오고, 두 번째로 꺼낸 뒤에는 P+2P+2번 원소가 들어오는 식이다. 수열이 이미 비었다면 아무것도 넣지 않는다.

SS가 빌 때까지 차례를 반복한다. 두 사람 모두 자신의 최종 점수가 가장 커지도록 둔다고 가정한다. 게임의 결과는 Alice의 점수에서 Bob의 점수를 뺀 값이다.

주어진 수열에 대해 시작 크기만 다른 KK개의 게임을 처리하는 프로그램 game을 작성하라.

입력

표준 입력의 첫 줄에는 두 양의 정수 NNKK가 공백으로 구분되어 주어진다.

둘째 줄에는 수열을 나타내는 NN개의 양의 정수 a1,a2,,aNa_1, a_2, \dots, a_N이 공백으로 구분되어 주어진다.

셋째 줄에는 KK개의 양의 정수 p1,p2,,pKp_1, p_2, \dots, p_K가 공백으로 구분되어 주어진다. ii번째 게임은 수열의 앞 pip_i개 원소로 만든 SS에서 시작한다. 여기서 i=1,2,,Ki = 1, 2, \dots, K이다.

출력

표준 출력에 KK줄을 출력한다. ii번째 줄에는 ii번째 게임의 결과를 나타내는 정수 하나를 출력한다. 게임 번호는 입력에 주어진 순서대로 11부터 KK까지 매긴다.

제한

  • 1N1000001 \le N \le 100000
  • 1K20001 \le K \le 2000
  • KNK \le N
  • 모든 i=1,2,,Ni = 1, 2, \dots, N에 대해 1aiN1 \le a_i \le N
  • 모든 i=1,2,,Ki = 1, 2, \dots, K에 대해 1piN1 \le p_i \le N
  • 테스트의 10%10\%에서는 1N101 \le N \le 10
  • 테스트의 30%30\%에서는 1N6001 \le N \le 600
  • 테스트의 50%50\%에서는 1N100001 \le N \le 10000, 1K10001 \le K \le 1000

힌트

각 게임은 정확히 NN번 움직이며 끝난다. Alice는 홀수 번째 차례에, Bob은 짝수 번째 차례에 수를 가져간다. 들어올 수가 남아 있는 동안에는 매 차례가 끝난 뒤 새 수 하나가 SS에 들어오므로, 그 구간에서는 차례를 시작할 때 SS가 항상 PP개의 원소를 가진다. 들어올 수가 떨어진 뒤에는 남은 SS를 순서대로 꺼내며 끝낸다.