在楼主花了45分钟理解完那个非暴力的题解之后,楼主又花了45分钟搓了一个出来,代码是这样的
#include<bits/stdc++.h>
using namespace std;
int main()
{
int s1,s2,s3;
int temp;
cin >> s1 >> s2 >> s3;
if(s1>s2)
{
temp = s1;
s1 = s2;
s2 = temp;
}
int mid12down,mids3down;
int maxnum = 0;
mid12down = (s1 + s2) / 2 + 1;
mids3down = (s3 + 1) / 2;
if(s3 <s2-s1)
{
maxnum = 1 + s1 + s3;
}
else
{
maxnum = mid12down + mids3down;
}
cout << maxnum;
return 0;
}
但是只有60分,在重新看了一下题解之后发现有一个点需要注意,就是必须要排序使得s2是输入三个数里面最大的数字,s1是里面最小的数字,这样才能使中间数s3完全包裹住2~s1+s2。题解这里一笔带过了,把楼主错误挂上来警示后人