#include <iostream>
#include <unordered_map>
#include <map>
#include <algorithm>
#include <string>
#include <vector>
#include<stack>
#include<queue>
#include<deque>
#include<memory>
using namespace std;
int main()
{
    string str;
    getline(cin,str);
    //cout<<str<<endl;
    vector<int> nums;
    int sig = 1;
    for(int i=0;i<str.size();i++)
    {
        if(str[i]=='-')
        {
            sig = -1;
            continue;
        }
        if(str[i]>='0'&&str[i]<='9')
        {
            int num = 0;
            while(i<str.size()&&str[i]>='0'&&str[i]<='9')
            {
                num = 10*num+str[i]-'0';
                i++;
            }
            nums.push_back(sig*num);
            sig = 1;
        }
    }
    //for(auto n:nums)
    //    cout<<n<<" ";
    //cout<<endl;
    int res = INT_MIN;
    int ans = INT_MIN;
    for(int i=0;i<nums.size();i++)
    {
        res = max(res+nums[i],nums[i]);
        ans = max(ans,res);
    }
    cout<<ans<<endl;
}

这是我A掉的,你可以参考一下