#由于输入过大,使用常规的input会超时
import sys
data=sys.stdin.read().split()
T=int(data[0])
p=1
N=int(2e5+5)
while T>0:
T-=1
n,k=int(data[p]),int(data[p+1])
p+=2
lt=[0]*N
for i in range(n):
x,y=int(data[p]),int(data[p+1])
p+=2
lt[x]+=y
q=0
l1=0
l2=0
bg=0
t=0
ans=0
for i in range(N):
y=lt[i]
if y>=3:
bg+=1
q+=y//3
if y%3==1:
l1+=1
elif y%3==2:
l2+=1
t+=y//3-1
else:
ans+=y
if q<k:
print(-1)
else:
if k<=t+1:
print(ans+(k-1)*3+2*bg+1)
elif k>t+1 and k<=t+1+l2:
u=k-(t+1)
print(ans+(k-1)*3+2*(bg-u)+2*u+1)
elif k>t+1+l2 and k<=t+1+l2+l1:
u=k-(t+1+l2)
print(ans+(k-1)*3+2*(bg-l2-u)+2*l2+u+1)
else:
u=k-(t+1+l2+l1)
print(ans+(k-1)*3+2*(bg-l2-l1-u)+2*l2+l1+1)
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复