시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1.5 초 (하단 참고) | 512 MB | 101 | 37 | 27 | 39.706% |
Alice는 정수 배열을 이용한 구간합 놀이를 즐겨하는데, 아래와 같은 순서로 게임을 진행한다.
예를 들어, $n = 3$, $m = 2$, $A = [10, 100, 1000]$ 이고 $x = [1, 2]$, $y = [2, 2]$라 하자. $n = 3$ 이므로 $A$의 원소를 재배열하여 얻을 수 있는 배열은 총 여섯 종류가 있다. 원래의 배열 $A$와 구분하기 위해 이를 배열 $B$라 하자.
이 경우 $S(A, x, y)$의 최댓값은 $2100$이며, 네 번째 경우인 $B = [100, 1000, 10]$를 통해 얻을 수 있다.
다른 예로, $n = 2$, $m = 1$, $A = [20, 22]$ 이고 $x = [1]$, $y = [2]$라 하자. $n = 2$ 이므로 $A$의 원소를 재배열하여 얻을 수 있는 배열은 총 두 종류가 있다. 원래의 배열 $A$와 구분하기 위해 이를 배열 $B$라 하자.
이 경우 $S(A, x, y)$의 최댓값은 $42$이며, 두 가지 다른 방법을 통해 얻을 수 있다.
$A$, $x$, $y$가 주어졌을 때 Alice가 $A$의 원소를 재배열하여 달성할 수 있는 $S(A, x, y)$의 최댓값을 구하고, 몇 가지 다른 방법으로 최댓값을 달성할 수 있는지 구해보자.
첫 줄에 테스트 케이스의 수 $T$가 주어진다.
각 테스트 케이스의 입력 첫 줄에 $n$, $m$이 공백으로 구분되어 주어진다. 둘째 줄에는 배열 $A$의 원소 $n$개가 공백으로 구분되어 주어진다. 다음 $m$줄에 걸쳐 각 줄에 두 개의 정수 $x[i]$와 $y[i]$가 공백으로 구분되어 주어진다.
각 테스트 케이스의 정답인 Alice가 달성할 수 있는 $S(A, x, y)$의 최댓값, 그리고 이를 달성할 수 있는 방법의 수를 공백으로 구분하여 출력한다. 단, 방법의 수가 매우 커질 수 있으므로 $10^9+7$로 나눈 나머지를 출력한다.
6 3 2 10 100 1000 1 2 2 2 2 1 20 22 1 2 5 3 1 3 5 7 9 1 2 2 3 3 4 6 1 1 2 3 100 200 300 1 2 7 7 100000000 99999999 99999998 99999997 99999996 99999995 99999994 1 7 2 7 3 7 4 7 5 7 6 7 7 7 13 1 1 2 3 4 5 6 7 8 9 10 11 12 13 1 13
2100 1 42 2 40 4 500 48 2799999944 1 91 227020758