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

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

가장 긴 증가하는 부분수열의 개수

면접 대비

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

요약
주어진 수열에서 길이가 가장 긴 증가 부분수열이 몇 개인지 m으로 나눈 나머지를 구합니다.
난이도

보통10점 중 6점

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

문제

수열 AA의 가장 긴 강한 증가 부분수열(strictly increasing subsequence)의 개수를 mm으로 나눈 나머지를 구하세요.

부분수열이란 AA에서 00개 이상의 원소를 지우고 남은 원소들의 상대적 순서를 유지한 수열입니다. 강한 증가 부분수열은 바로 앞 원소보다 항상 더 큰(같으면 안 되고 반드시 더 큰) 원소가 이어지는 부분수열을 뜻합니다. 이러한 강한 증가 부분수열 중 길이가 가장 긴 것을 세는데, 그런 부분수열은 여러 개일 수 있으므로 그 개수를 구하면 됩니다. 두 부분수열은 선택한 원소의 위치 집합이 다르면 서로 다른 것으로 봅니다.

입력

첫째 줄에 수열 AA의 길이 nn과 나눌 수 mm이 주어집니다 (1≤n≤500 0001 \le n \le 500\,000, 1≤m≤1091 \le m \le 10^9).

둘째 줄에 AA의 원소 a1,a2,…,ana_1, a_2, \dots, a_n이 공백으로 구분되어 주어집니다 (0≤ai≤1090 \le a_i \le 10^9).

출력

가장 긴 강한 증가 부분수열의 개수를 mm으로 나눈 나머지를 한 줄에 출력하세요.

예제1

  1. 예제 1

    입력
    4 10
    3 2 5 4
    
    예상 출력
    4