좋은 구간 부분수열
시간 제한2초메모리 제한1024 MB
각 구간에서 정수를 하나씩 골라 값이 비내림차순이 되는 구간의 부분수열에서, 가중치 합의 최댓값과 그 값을 이루는 부분수열의 개수를 구합니다.
문제
개의 구간 ()가 주어진다. 각 구간에는 가중치 가 있다.
구간들의 부분수열을 고른다. 고른 각 구간에서 정수를 하나씩 골라 원래 구간의 순서대로 나열하면 정수열이 된다. 이렇게 만든 정수열을 비감소 수열로 만들 수 있으면, 그 구간들의 부분수열을 좋다고 한다.
를 좋은 부분수열의 가중치 최댓값이라 하자. 여기서 부분수열의 가중치는 포함된 구간 가중치의 합이다. 와 가중치가 인 좋은 부분수열의 개수를 구하라. 개수는 으로 나눈 나머지로 구한다.
입력
첫 줄에 테스트 케이스의 개수 ()가 주어진다.
각 테스트 케이스의 첫 줄에는 정수 , ()이 주어진다.
이어지는 개의 줄에는 번째 구간을 나타내는 정수 , , (, )가 주어진다.
모든 테스트 케이스에 대해 의 합과 의 합은 각각 을 넘지 않는다.
출력
각 테스트 케이스마다 한 줄에 두 정수를 출력한다. 첫 번째는 좋은 부분수열의 가중치 최댓값이고, 두 번째는 그 가중치를 갖는 좋은 부분수열의 개수를 으로 나눈 나머지이다.