만드는 중입니다

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

레코드 패리티

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

요약
순열에서 정확히 k개의 레코드(앞의 모든 원소보다 큰 원소)를 가지는 부분수열들의 (-1)^길이 합을 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

길이가 nn인 순열 pp와 정수 kk가 주어진다.

어떤 원소가 자기 앞의 모든 원소보다 엄격하게 크면 그 원소를 레코드라고 한다.

정확히 kk개의 레코드를 갖는 모든 부분수열에 대해 (−1)len(-1)^{\mathit{len}}의 합을 구하라. 여기서 len\mathit{len}은 부분수열의 원소 개수이다. 답이 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 구한다.

입력

첫 번째 줄에 정수 nn과 kk가 주어진다 (1≤k≤n≤1061 \le k \le n \le 10^6).

두 번째 줄에 순열 p1,p2,…,pnp_1, p_2, \ldots, p_n이 주어진다.

출력

직접 맞춰 보세요.

힌트

두 번째 예제에서는 길이가 3인 부분수열이 모두 레코드를 정확히 3개씩 가지고, 다른 부분수열은 레코드가 정확히 3개인 경우가 없다. 따라서 합은 (−1)3(73)=−35(-1)^3 \binom{7}{3} = -35이고, 이를 998 244 353998\,244\,353으로 나눈 나머지는 998 244 318998\,244\,318이다.

세 번째 예제에서는 레코드가 정확히 5개인 부분수열이 하나도 없으므로, 공집합의 합인 0이 답이다.

예제3

  1. 예제 1

    입력
    5 2
    4 1 2 5 3
    
    예상 출력
    3
    
  2. 예제 2

    입력
    7 3
    1 2 3 4 5 6 7
    
    예상 출력
    998244318
    
  3. 예제 3

    입력
    5 5
    2 5 4 1 3
    
    예상 출력
    0