题目描述
Little Jing 有很多标杆,已知每个标杆的长度(不超过10000),现在她要把标杆插在地上,相同长度的标杆要接在一起(一个接在另外一个的上面)。Little Jing想知道最后地上插了多少根杆,你能帮帮她吗?
输入
首先输入一个整数N,表示有N组测试实例。
每组实例输入两行,第一行一个正整数n(n<=1000),表示标杆的数量。
第二行是n个正整数表示n个标杆的长度。
输出
每组实例输出一行,包含两个数,最后长度最高的那根杆所包含的标杆的数量,地上插了多少根杆,中间用一个空格隔开。(题目保证有唯一解)
样例输入 Copy
2
3
1 2 3
4
6 5 6 7
样例输出 Copy
1 3
2 3
#include<iostream>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n, sum[1001] = { 0 }, max = 0,temp=1,a;
int b[1001] = { 0 };
cin >> n;
int len = n;
for (int i = 0; i < n; i++)
{
cin >> a;
b[a]++;
if (b[a]>1) //数组大于1 重复就将长度减一
len--;
}
for (int i =0; i <=1000; i++)
{
sum[i] =i*b[i]; //长度相同的 算总长度
if (sum[i] > max)
{
max = sum[i];
temp = b[i];
}
}
cout <<temp<<' '<<len << endl;
}
return 0;
}