만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

배열 구간합 놀이

면접 대비

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

요약
주어진 m개의 구간 합 전체가 최대가 되도록 배열 A의 원소를 재배열하고, 그 최대값을 만드는 재배열의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 4점

유형
누적 합, 정렬, 조합론
정답자
아직 제출이 없습니다

문제

Alice는 정수 배열로 구간합 놀이를 한다. 게임은 다음 순서로 진행된다.

  • 먼저 서로 다른 정수 nn개로 이루어진 길이 nn의 배열 AA를 만든다. AA의 원소는 A[1],…,A[n]A[1], \dots, A[n]이다.
  • 다음으로 배열의 구간을 나타내는 정수 쌍 (x1,y1),…,(xm,ym)(x_1, y_1), \dots, (x_m, y_m)을 mm개 고른다. 각 쌍은 1≤xi≤yi≤n1 \le x_i \le y_i \le n을 만족해야 한다.
  • 구간합은 다음과 같이 정의한다. S(A,x,y)=∑j=1m(∑i=xjyjA[i])S(A, x, y) = \sum_{j=1}^{m} \left( \sum_{i=x_j}^{y_j} A[i] \right)
  • 목표는 AA의 원소를 임의로 재배열하여 S(A,x,y)S(A, x, y)의 값을 최대로 만드는 것이다. 원소가 nn개이므로 재배열은 총 n!n!가지이다.

예를 들어 n=3n = 3, m=2m = 2, A=[10,100,1000]A = [10, 100, 1000], x=[1,2]x = [1, 2], y=[2,2]y = [2, 2]이면 최댓값은 21002100이고, 이 값은 [100,1000,10][100, 1000, 10]으로 재배열했을 때만 얻어진다.

다른 예로 n=2n = 2, m=1m = 1, A=[20,22]A = [20, 22], x=[1]x = [1], y=[2]y = [2]이면 최댓값은 4242이고, 두 가지 재배열 모두 이 값을 달성한다.

AA, xx, yy가 주어졌을 때 AA의 원소를 재배열하여 얻을 수 있는 S(A,x,y)S(A, x, y)의 최댓값을 구하고, 그 최댓값을 달성하는 재배열이 몇 가지인지 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에 nn과 mm이 공백으로 구분되어 주어진다. 둘째 줄에는 배열 AA의 원소 nn개가 공백으로 구분되어 주어진다. 다음 mm줄에는 각 줄마다 정수 xix_i와 yiy_i가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스마다 S(A,x,y)S(A, x, y)의 최댓값과 그 최댓값을 달성하는 재배열의 수를 공백으로 구분하여 한 줄에 출력한다. 재배열의 수는 109+710^9+7로 나눈 나머지를 출력한다.

제한

  • 1≤T≤101 \le T \le 10
  • 1≤n≤50 0001 \le n \le 50\,000
  • 1≤m≤200 0001 \le m \le 200\,000
  • AA의 각 원소는 11 이상 10810^8 이하이다
  • 배열 AA의 원소는 모두 고유하다
  • 모든 정수 ii (1≤i≤m1 \le i \le m)에 대하여 1≤xi≤yi≤n1 \le x_i \le y_i \le n이다

예제1

  1. 예제 1

    입력
    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