R167451744 100分求助,哪位大佬指点一下怎么优化啊?
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
#define int long long
int n, k;
int ans[100000];
int m[5];
signed main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> m[0];
cin >> m[1];
cin >> m[2];
cin >> m[3];
cin >> m[4];
sort(m, m + 5);
k = m[1]-m[0];
m[1]-=k;
m[2]-=k;
m[3]-=k;
m[4]-=k;
while (m[0]!=0)
{
m[1]--;
m[2]--;
m[3]--;
m[4]--;
k++;
sort(m, m + 5);
}
ans[i] = k + m[1];
}
for (int p = 0; p < n; p++)
{
cout << ans[p] << endl;
}
return 0;
}
题目: 题目描述
牛牛今年上幼儿园了,老师叫他学习减法。老师给了他五个数字,他每次操作可以选择其中的四个数字减一,减一之后的数字不能小于零——因为牛牛还没有接触过负数。
现在牛牛想知道,自己最多可以进行多少次这样的操作?但是他根本不会做,于是他把这个问题交给了你。
他相信你一定可以帮他解决这个幼儿园的问题。
输入格式
输入第一行包含一行一个正整数 t ,表示有 t 组数据,接下来每行包含五个正整数,表示老师给出的五个数字 ? , ? , ? , ? , ? ( 1 ≤ ? , ? , ? , ? , ? ≤ 1 0 ^ 9 )
输出格式
输出 t 行,对于每组测试数据输出一行一个正整数表示答案。
输入输出样例
输入 :
2
5 4 3 2 1
10000 1 1 1 1
输出 :
3
1
说明/提示
对于样例 1 来说,前两次选择前四个数字,两次操作使得这四个数字全部减二,此时这五个数字变为 [3,2,1,0,1],那么还可以选择第 1 2 3 5 这四个数字再进行减一,得到 [2,1,0,0,0],总共进行了 3 次操作。
对于 40% 的数据,有 1 ≤ t ≤ 5000 , 1 ≤ a , b , c , d , e ≤ 100
对于 100% 的数据,有 1 ≤ t ≤ 1 0 ^ 5 , 1 ≤ a , b , c , d , e ≤ 1 0 ^ 9
谢大佬求助