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

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

가장 긴 증가하는 부분 수열 6

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

요약
길이가 최대 100만인 수열에서 가장 긴 증가 부분수열의 길이와 그 개수를 10^9+7로 나눈 나머지로 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 이분 탐색, 정렬, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열의 길이와 그 개수를 구하는 프로그램을 작성하시오.

예를 들어, 수열 A = {10, 20, 10, 30, 20, 50}인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50}이고, 길이는 4이며, 1개이다. A = {10, 20, 30, 10, 20, 30}인 경우에는 가장 긴 증가하는 부분 수열의 길이가 3이고, 4개가 있다.

입력

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다.

둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000)

출력

첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이와 개수를 출력한다. 개수는 매우 커질 수 있으므로 109+7로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

    입력
    6
    10 20 10 30 20 50
    
    예상 출력
    4 1
    
  2. 예제 2

    입력
    6
    10 20 30 10 20 30
    
    예상 출력
    3 4
    
  3. 예제 3

    입력
    10
    3 2 1 6 5 4 10 9 8 7
    
    예상 출력
    3 36