【题目描述】
ZGY报名参加了C++锦标赛,在这个比赛中前K名可以获得一本《C++ Primer》,当然ZGY也想要一本。
这个比赛已经有n个人参加,并且互相之间已经进行了比赛,每一个人都有一个得分,用于最后排名。ZGY作为第n + 1个参赛者,需要与之前的每一个人打一场比赛,当然ZGY最开始的得分等于0。
对于每场比赛,有两个人参加,不会存在平局,胜者得分增加1,败者得分不变。最后按照 得分从高到低来排名,假设有人与ZGY最终得分相同,那么如果那个人曾经输给了ZGY就会排在ZGY后面,否则会排在ZGY的前面。
如果ZGY赢了某个人,就需要消耗相应的RP值,现在ZGY可以决定赢那些人,所以ZGY想知道最少需要消耗多少RP值才能够获得一本《C++ Primer》。
【输入格式】
本题包含多组数据,第一行读入一个整数T表示数据组数
对于每一组数据
第一行,包含两个整数 n, k表示在ZGY之前已经有n个人参加比赛,前k名可以获得《C++ Primer》。
接下来n行,每行包含两个整数 pi和ei表示第i个人已经获得的得分和赢第i个人所需要花费的RP(注意在ZGY来之前这n个人的比赛得分不一定满足上述计分规则)
【输出格式】
对于每一组数据,输出一个整数,表示最少需要花费的RP,如果无论如何也无法进入前K名,则输出-1
【样例】
tournament.in
2 3 2 1 1 1 4 2 2 2 1 3 2 4 0tournament.out
3 -1【样例解释】
对于ZGY来说要进入前2名只需要赢第1个人和第3个人即可,最终的得分分别为
可以看到第2和3个人与ZGY同分,因为ZGY战胜了第3个人,被第2个人打败,所以ZGY排在第2名。
【数据规模与约定】