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;
}
相关推荐
2603_965148113 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
SuperByteMaster5 小时前
timer.c 介绍
c语言
知无不研5 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
cfm_29146 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
C++ 老炮儿的技术栈7 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011167 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据7 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
zlinear数据采集卡8 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai8 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
瑞码空间8 小时前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing