아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

수열 (Hard)

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

요약
길이 M인 증가하는 인덱스 튜플 B 가운데 고른 값들이 서로 다른 모든 경우에 대해 A[B1]부터 A[BM]까지의 곱을 더해 1e9+7로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 조합론, 수학, 정렬
정답자
아직 제출이 없습니다

문제

모든 원소가 양의 정수이고 길이가 NN인 수열 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N과 정수 MM이 주어진다. 다음 조건을 모두 만족하는 수열 B1,B2,⋯ ,BMB_1, B_2, \cdots, B_M을 좋은 수열이라고 하자.

  • 수열의 길이는 MM이다.
  • 모든 원소는 11 이상 NN 이하의 정수이다.
  • B1<B2<⋯<BMB_1 < B_2 < \cdots < B_M이다.
  • AB1,AB2,⋯ ,ABMA_{B_1}, A_{B_2}, \cdots, A_{B_M}은 서로 다르다.

가능한 모든 좋은 수열 B1,⋯ ,BMB_1, \cdots, B_M에 대해 AB1×AB2×⋯×ABMA_{B_1} \times A_{B_2} \times \cdots \times A_{B_M}의 합을 1 000 000 0071\,000\,000\,007로 나눈 나머지를 구하시오.

입력

첫째 줄에 수열 AA의 길이 NN과 좋은 수열의 길이 MM이 공백으로 구분되어 주어진다.

둘째 줄에 수열 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다.

출력

가능한 모든 좋은 수열 B1,⋯ ,BMB_1, \cdots, B_M에 대해 AB1×AB2×⋯×ABMA_{B_1} \times A_{B_2} \times \cdots \times A_{B_M}의 합을 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력한다.

제한

  • 1≤N≤1 0001 \le N \le 1\,000
  • 1≤M1 \le M
  • 1≤Ai≤100 0001 \le A_i \le 100\,000 (1≤i≤N1 \le i \le N)
  • MM은 AA에 존재하는 서로 다른 수의 개수보다 작거나 같다.

힌트

예제에서 주어진 수열 [3,1,1,2][3, 1, 1, 2]에는 두 개의 좋은 수열 [1,2,4][1, 2, 4]와 [1,3,4][1, 3, 4]가 존재한다. 출력해야 하는 답은 3×1×2+3×1×2=123 \times 1 \times 2 + 3 \times 1 \times 2 = 12이다.

예제1

  1. 예제 1

    입력
    4 3
    3 1 1 2
    
    예상 출력
    12