强基班选拔
时间限制:1秒 内存限制:256M
【题目描述】
在强基班的选拔考试中,一共有 \(n\) 个学霸参加了考试,其中第 \(i\) 个学霸的分数为 \(a_i\)。现在需要从中挑选 \(m\) 个左右的学霸组成强基班。
对教务主任小H来说,这原本是一件很简单的事情,但有 \(k\) 对学霸提出了奇怪的要求:一对学生中如果其中一个选上,那么另一个也必须选,否则他们将会很生气而上告教育局。当然如果两人都没选上,那就无所谓了。
现在请你帮助小H在不让学霸生气的情况下,挑选出尽量接近 \(m\) 的学霸人数,并使得分数总和尽量大。
【输入格式】
第一行三个正整数 \(n,m,k\),所有学霸用 \(1..n\) 依次编号。
第二行包含 \(n\) 个整数,其中第 \(i\) 个整数表示第 \(i\) 个学霸的总分 \(a_i\)。
接下来 \(k\) 行,每行两个数,表示一对有要求的学霸的编号。
【输出格式】
输出两个整数,第一个整数表示选出的人数,这个数与 \(m\) 尽可能接近,如果有两种方案与 \(m\) 的接近程度一样,输出其中较小的一个;第二个整数表示最大的总分和。
【输入输出样例1】
Input
4 3 2
600 630 580 680
1 2
3 4
Output
2 1260
【样例1说明】
选3号和4号两位学霸,总分和为 580+680=1260;
虽然也可选1号2号,但是他们的分数和比较小;
无法选3个学霸出来;
虽然可以4个学霸全选,和选2人时,与m=3接近程度一样,但要求输出人数较小的情况。
【输入输出样例2】
Input
12 5 5
690 650 580 680 600 670 600 610 650 600 700 680
1 2
4 7
7 8
5 9
10 5
6 12
3 11
Output
5 3390
【数据限制】
共有20个测试点,其中:
测试点1~4有 \(1≤m≤n≤20000,m=0,k=0,0≤ai≤750\)。
测试点5~8有 \(1≤m≤n≤20,0≤k≤20,0≤ai≤750\)。
测试点9~20有 \(1≤m≤n≤20000,0≤k≤20000,0≤ai≤750\)。
【来源】
Mr.he