배열 구간합 놀이
면접 대비시간 제한1.5초메모리 제한512 MB
주어진 m개의 구간 합 전체가 최대가 되도록 배열 A의 원소를 재배열하고, 그 최대값을 만드는 재배열의 개수를 10^9+7로 나눈 나머지로 구합니다.
문제
Alice는 정수 배열로 구간합 놀이를 한다. 게임은 다음 순서로 진행된다.
- 먼저 서로 다른 정수 개로 이루어진 길이 의 배열 를 만든다. 의 원소는 이다.
- 다음으로 배열의 구간을 나타내는 정수 쌍 을 개 고른다. 각 쌍은 을 만족해야 한다.
- 구간합은 다음과 같이 정의한다.
- 목표는 의 원소를 임의로 재배열하여 의 값을 최대로 만드는 것이다. 원소가 개이므로 재배열은 총 가지이다.
예를 들어 , , , , 이면 최댓값은 이고, 이 값은 으로 재배열했을 때만 얻어진다.
다른 예로 , , , , 이면 최댓값은 이고, 두 가지 재배열 모두 이 값을 달성한다.
, , 가 주어졌을 때 의 원소를 재배열하여 얻을 수 있는 의 최댓값을 구하고, 그 최댓값을 달성하는 재배열이 몇 가지인지 구하라.
입력
첫 줄에 테스트 케이스의 수 가 주어진다.
각 테스트 케이스의 첫 줄에 과 이 공백으로 구분되어 주어진다. 둘째 줄에는 배열 의 원소 개가 공백으로 구분되어 주어진다. 다음 줄에는 각 줄마다 정수 와 가 공백으로 구분되어 주어진다.
출력
각 테스트 케이스마다 의 최댓값과 그 최댓값을 달성하는 재배열의 수를 공백으로 구분하여 한 줄에 출력한다. 재배열의 수는 로 나눈 나머지를 출력한다.
제한
- 의 각 원소는 이상 이하이다
- 배열 의 원소는 모두 고유하다
- 모든 정수 ()에 대하여 이다