C. Mr. Perfectly Fine

time limit per test

2 seconds

memory limit per test

256 megabytes

Victor wants to become "Mr. Perfectly Fine". For that, he needs to acquire a certain set of skills. More precisely, he has 22 skills he needs to acquire.

Victor has nn books. Reading book ii takes him mimi minutes and will give him some (possibly none) of the required two skills, represented by a binary string of length 22.

What is the minimum amount of time required so that Victor acquires all of the two skills?

Input

The input consists of multiple test cases. The first line contains an integer tt (1≤t≤10001≤t≤1000) --- the number of test cases. The description of the test cases follows.

The first line of each test case contains an integer nn (1≤n≤2⋅1051≤n≤2⋅105) --- the number of books available.

Then nn lines follow. Line ii contains a positive integer mimi (1≤mi≤2⋅1051≤mi≤2⋅105) and a binary string of length 22, where si1=1si1=1 if reading book ii acquires Victor skill 11, and si1=0si1=0 otherwise, and si2=1si2=1 if reading book ii acquires Victor skill 22, and si2=0si2=0 otherwise.

It is guaranteed that the sum of nn over all test cases doesn't exceed 2⋅1052⋅105.

Output

For each test case, output a single integer denoting the minimum amount of minutes required for Victor to obtain both needed skills and −1−1 in case it's impossible to obtain the two skills after reading any amount of books.

Example

Input

Copy

复制代码

6

4

2 00

3 10

4 01

4 00

5

3 01

3 01

5 01

2 10

9 10

1

5 11

3

9 11

8 01

7 10

6

4 01

6 01

7 01

8 00

9 01

1 00

4

8 00

9 10

9 11

8 11

Output

Copy

复制代码
7
5
5
9
-1
8

Note

In the first test case, we can use books 22 and 33, with a total amount of minutes spent equal to 3+4=73+4=7.

In the second test case, we can use the books 11 and 44, with a total amount of minutes spent equal to 3+2=53+2=5.

In the third test case, we have only one option and that is reading book 11 for a total amount of minutes spent equal to 55.

解题说明:此题是一道模拟题,可以采用贪心算法,找出包含1和10的耗费最小时间组合或者是直接包含11的最小时间,两者进行比较即可。

cpp 复制代码
#include <stdio.h>

int main()
{
	int t = 0, n = 0, a = 0, s = 0;
	scanf("%d", &t);
	while (t--) 
	{
		scanf("%d", &n);
		int min_1 = 200005, min_2 = 200005, min_3 = 2000005;
		for (int i = 0; i < n; i++)
		{
			scanf("%d%d", &a, &s);
			if (1 == s && min_1 > a)
			{
				min_1 = a;
			}
			else if (10 == s && min_2 > a)
			{
				min_2 = a;
			}
			else if (11 == s && min_3 > a)
			{
				min_3 = a;
			}
		}
		if ((min_1 == 200005 || min_2 == 200005) && min_3 == 2000005)
		{
			printf("-1\n");
		}
		else if (min_1 + min_2 >= min_3)
		{
			printf("%d\n", min_3);
		}
		else
		{
			printf("%d\n", min_1 + min_2);
		}
	}
	return 0;
}
相关推荐
在放️1 小时前
Python 爬虫 · 第三方代理接入与合规使用
开发语言·爬虫·python
KANGBboy1 小时前
java知识五(继承)
java·开发语言
c++之路1 小时前
Bazel C++ 构建系列文档(三):构建第一个 C++ 项目
开发语言·c++
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第117题】【并发篇】第17题:线程有几种状态,之间如何转换?
java·开发语言·面试
十月的皮皮2 小时前
C语言学习笔记20260615-有序升序序列合并
c语言·笔记·学习
聚名网2 小时前
域名net,com,cn有区别吗?有哪些不同呢?
服务器·开发语言·php
牛油果子哥q2 小时前
STL set与map底层精讲,红黑树适配原理、有序去重特性、迭代器遍历、API实战与面试核心考点全解
开发语言·数据结构·c++·面试
foundbug9992 小时前
直流电机 PID 速度控制 MATLAB 仿真程序
开发语言·matlab
Tian_Hang3 小时前
C++原型模式(Protype)
开发语言·c++·算法
天天讯通4 小时前
OKCC 呼叫中心安全性能全解析:技术防护与管理措施指南
大数据·开发语言·网络·人工智能·安全·语音识别