#由于输入过大,使用常规的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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论