#4159. A. Setting up Camp A. 设置营地 800

A. Setting up Camp A. 设置营地 800

A. 设置营地

时间限制:每个测试用例 1 秒 内存限制:每个测试用例 256 MB


📖 题目描述

奥林匹克竞赛的组织委员会计划在比赛结束后带领参赛者进行一次徒步旅行。目前正在计算所需帐篷的数量。已知每个帐篷最多可以容纳 3 人。

在参赛者中,有以下几类人:

  • 内向者:每个内向者只希望单独住在一个帐篷中。也就是说,一个帐篷里必须正好有一个人——就是内向者自己。
  • 外向者:每个外向者希望和另外两个参赛者住在同一个帐篷里。也就是说,一个帐篷里必须正好有三个人——包括外向者自己和其他两位参赛者。
  • 通用型(universals):通用型的人不介意与任何人住。无论是单独住、与一个人住,还是与两个人住,都可以接受。

组织委员会非常尊重每位参赛者的要求,因此他们希望尽可能满足每个人的需求。

请你告诉我们,最少需要多少帐篷,以确保所有参赛者都能根据他们的偏好住到帐篷里。如果无法按照参赛者的偏好安排住宿,请输出 -1


📥 输入格式

  • 第一行包含一个整数 tt1t1041 \le t \le 10^4)——表示测试用例的数量。
  • 接下来每个测试用例包含一行三个整数 aabbcc0a,b,c1090 \le a, b, c \le 10^9),分别表示内向者、外向者和通用型参赛者的数量。

📤 输出格式

对于每组测试用例,输出一行一个整数,表示最少需要的帐篷数,或者输出 -1 表示无法满足要求。


🧪 样例输入

10
1 2 3
1 4 1
1 4 2
1 1 1
1 3 2
19 7 18
0 0 0
7 0 0
0 24 0
1000000000 1000000000 1000000000

✅ 样例输出

3
-1
3
-1
3
28
0
7
8
1666666667


🔍 样例说明

  • 样例 1:1 个帐篷给内向者,1 个帐篷给两个外向者和 1 个通用型,1 个帐篷给剩余 2 个通用型。
  • 样例 2:4 个外向者只能配出完整的 1 个三人帐篷,剩余 1 个外向者 + 1 个通用型无法凑出一组,输出 -1
  • 样例 6:19 个内向者需要 19 个帐篷,7 个外向者可组成 2 组(三人)+ 1 残余。使用通用型帮助凑 1 个三人帐篷。剩余通用型单独或组合住。共需 28 个帐篷。