题解 | #丢手绢#

丢手绢

https://ac.nowcoder.com/acm/problem/207040

#include

using namespace std;

int main() { int n, sum = 0, t = 0; cin >> n;

int a[n];
for(int i = 0; i < n; i++) cin >> a[i], sum += a[i];

int l = 0, r = 0, ret = 0;
for(l; l < n; l++)
{
    while(t < sum / 2)
    {
        t += a[r % n];
        r ++;
    }
    
    if(t == sum / 2){cout << t; return 0;}
    if(t > sum / 2) ret = max(ret, min(t, sum - t));
    
    t -= a[l];
}

cout << ret;

return 0;

}

当对r限制到小于n时会导致错误。

全部评论
可取如下样例 7 11 8 此时r < n将不会得到正确答案
1 回复 分享
发布于 11-08 13:31 湖北
不知道为什么不能令r < n。
点赞 回复 分享
发布于 11-08 13:05 湖北

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
头像
昨天 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务