시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1.5 초 (하단 참고) | 512 MB | 21 | 12 | 12 | 63.158% |
Alice는 정수 배열을 이용한 놀이를 즐겨한다.
길이 $n$인 정수 배열 $A$가 있을 때 $i$번째 원소를 $A[i]$라 하자 ($i = 1, 2, \dots, n$). 이때 $A$의 부분배열 $A[i, j]$는 $i$번째 원소부터 $j$번째 원소까지를 포함한 길이 $(j - i + 1)$인 배열로 정의한다 ($1 ≤ i ≤ j ≤ n$). 예를 들어 $A = [1, 3, 5, 7]$이라면 $A[1, 2]$은 $[1, 3]$이고 $A[2, 4]$은 $[3, 5, 7]$이 된다. 참고로 $A$의 부분 배열은 총 $n \times (n+1) / 2$개 존재한다.
각각의 부분배열 $A[i, j]$에 대하여 Alice는 아래와 같은 방법으로 점수를 매기기로 했다. 편의상 $A[i, j]$의 점수를 $Score(i, j)$라 하자. ($1 ≤ i ≤ j ≤ n$)
예를 들어 $A = [1, 1, 2]$ 인 경우를 살펴보자.
다른 예로, $A = [1, 3, 5, 7]$ 인 경우를 살펴보자.
정수 배열 $A$가 주어졌을 때, Alice를 도와 $A$의 부분배열 점수 총합을 구해보자.
첫 줄에 테스트 케이스의 수 $T$가 주어진다.
각 테스트 케이스의 첫 줄에는 배열의 길이 $n$이 주어지고 둘째 줄에는 $A$의 원소인 $n$개의 정수가 공백으로 구분되어 주어진다.
각 테스트 케이스의 정답을 각 줄에 출력한다. 단, 답이 매우 커질 수 있으므로 정답을 $10^9+7$로 나눈 나머지를 출력한다.
4 3 1 1 2 4 1 3 5 7 6 1 2 3 1 3 2 6 1 2 3 2 3 1
13 400 525 453