题目描述
给定实直线 L 上 n 个开区间组成的集合 I,和一个正整数 k,试设计一个算法,从开区间集合 I 中选取出开区间集合 S⊆I,使得在实直线 L 上的任意一点 x,S 中包含 x 的开区间个数不超过 k,且 ∑z∈S∣z∣ 达到最大(∣z∣ 表示开区间 z 的长度)。
这样的集合 S 称为开区间集合 I 的最长 k 可重区间集。∑z∈S∣z∣ 称为最长 k 可重区间集的长度。
对于给定的开区间集合 I 和正整数 k,计算开区间集合 I 的最长 k 可重区间集的长度。
输入格式
输入的第一行有 2 个正整数 n 和 k,分别表示开区间的个数和开区间的可重叠数。接下来的 n 行,每行有 2 个整数,表示开区间的左右端点坐标 l,r,数据保证 l<r。
输出格式
输出最长 k 可重区间集的长度。
4 2
1 7
6 8
7 10
9 13
15
提示
对于 100% 的数据,1≤n≤500,1≤k≤3,1≤l<r≤105。