携程328笔试t3代码

刚好保存了t3的代码,t4不会

当区间和大于等于0就可以直接抛弃了,因为最小的区间的左区间一定不会大于等于0

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n; cin >> n;
    vector<int> nums;
    long long ans = 0;
    for (int i = 0; i < n; ++i) {
        int t; cin >> t;
        nums.push_back(t);
        ans += t;
    }
    int left = 0, right = 0;
    long long tsum = 0;
    long long minum = 0;
    while (right < n) {
        if ((nums[right] & 1) == 1 || tsum + nums[right] >= 0) {
            right++;
            left = right;
            tsum = 0;
        } else {
            tsum += nums[right];
            minum = min(minum, tsum);
            right++;
        }
        //cout << tsum;
    }
    cout << ans - (minum / 2);

    return 0;
}

全部评论

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
2 2 评论
分享
牛客网
牛客企业服务