首页 > 代码库 > 感激的花束 题解

感激的花束 题解

题目描述:

南星国的某J从小受某X照顾,有一天,他决定送些花束感激X君。

他觉得,虽然,送花什么的很狗血,但是,某J是个传统的人,所以,他还是打算送了。

在某X的家乡,有个奇怪的习俗,一个花束只能有3朵花,要么是三种不同色的,要么是一种色的

花束送得越多,表示爱意越浓。现在某J所在的花店有红橙黄绿蓝靛紫七种颜色的花。

花店的南南老板有个怪癖。到她店里来买花的人,最多可以选三种颜色

某J告诉南南老板,他想送最多的花束来表达他对X的敬意,聪明的南南老板听了某J的描述后,立马就知道了最多能有多少花束。你知道吗?

 

输入:

有多组输入,每组第一行输入一个整数T(1<= T <=1000),表示有T组,接下来的T行分别有7个整数(0<=ai<=10^9,i=1,2,....,7)分别表示7种不同颜色的花的数量。

输出:

首先输出当前Case k:,k表示第几组,接下来是n行结果。

 

样例输入:

2
1 1 1 1 2 2 2
2 0 3 4 2 9 1
3
3 4 6 1 0 2 3
0 4 2 3 0 7 1
0 0 0 0 0 0 0  

样例输出:

Case 1:
2
5
Case 2:
4
4

 

 

C++代码:

#include <cstdio>
#include <iostream>
#include <cstring>

using namespace std;

int inn[11];

inline int query()
{
return inn[4]/3 + inn[5]/3 + inn[6]/3;
}

int main(int argc, const char * argv[])
{
int t,tt = 0;
while(~scanf("%d", &t))
{
printf("Case %d:\n",++tt);
while(t--)
{
for(int i=0;i<7;++i)
{
scanf("%d",&inn[i]);
}
sort(inn,inn+7);
int result = 0;
result = query();
if(inn[4])
{
--inn[4];
--inn[5];
--inn[6];
result = max(result,1+query());
}
if(inn[4])
{
--inn[4];
--inn[5];
--inn[6];
result = max(result,2+query());
}
if(inn[4])
{
--inn[4];
--inn[5];
--inn[6];
result = max(result,3+query());
}
printf("%d\n",result);
}
}
return 0;
}