만드는 중입니다

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

좋은 구간 부분수열

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

요약
각 구간에서 정수를 하나씩 골라 값이 비내림차순이 되는 구간의 부분수열에서, 가중치 합의 최댓값과 그 값을 이루는 부분수열의 개수를 구합니다.
난이도

보통10점 중 6점

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

문제

nn개의 구간 [li,ri][l_i, r_i] (1≤li≤ri≤m1 \le l_i \le r_i \le m)가 주어진다. 각 구간에는 가중치 cic_i가 있다.

구간들의 부분수열을 고른다. 고른 각 구간에서 정수를 하나씩 골라 원래 구간의 순서대로 나열하면 정수열이 된다. 이렇게 만든 정수열을 비감소 수열로 만들 수 있으면, 그 구간들의 부분수열을 좋다고 한다.

kk를 좋은 부분수열의 가중치 최댓값이라 하자. 여기서 부분수열의 가중치는 포함된 구간 가중치의 합이다. kk와 가중치가 kk인 좋은 부분수열의 개수를 구하라. 개수는 998 244 353998\,244\,353으로 나눈 나머지로 구한다.

입력

첫 줄에 테스트 케이스의 개수 tt (1≤t≤1041 \le t \le 10^4)가 주어진다.

각 테스트 케이스의 첫 줄에는 정수 nn, mm (1≤n,m≤2⋅1051 \le n, m \le 2 \cdot 10^5)이 주어진다.

이어지는 nn개의 줄에는 ii번째 구간을 나타내는 정수 lil_i, rir_i, cic_i (1≤li≤ri≤m1 \le l_i \le r_i \le m, 1≤ci≤1091 \le c_i \le 10^9)가 주어진다.

모든 테스트 케이스에 대해 nn의 합과 mm의 합은 각각 2⋅1052 \cdot 10^5을 넘지 않는다.

출력

각 테스트 케이스마다 한 줄에 두 정수를 출력한다. 첫 번째는 좋은 부분수열의 가중치 최댓값이고, 두 번째는 그 가중치를 갖는 좋은 부분수열의 개수를 998 244 353998\,244\,353으로 나눈 나머지이다.

예제1

  1. 예제 1

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