#include <climits> #include <iostream> #include <vector> using namespace std; int main() { int buf, n; cin >> n; vector<int> nums; while (cin >> buf) { nums.push_back(buf); } // int maxSum = nums[0], minSum = 0, curSum = 0; // vector<int> curSums; // 保存当前连续子数组和(当前总前缀和) // for(int i = 0; i < n; ++i) { // curSum += nums[i]; // curSums.push_back(curSum); // maxSum = std::max(maxSum, curSum - minSum); // minSum = std::min(minSum, curSum); // } // int maxSum = nums[0], minSum = min(0, nums[0]), curSum = nums[0]; // for(int i = 1; i < n; ++i) { // curSum += nums[i]; // maxSum = max(maxSum, curSum - minSum); // minSum = min(minSum, curSum); // } // int maxSum = INT_MIN, minSum = 0; // vector<int> curSums; // for(int i = 0; i < n; ++i) { // if(i) { // curSums.push_back( nums[i] + curSums[i - 1] ); // } else curSums.push_back(nums[i]); // maxSum = std::max(maxSum, curSums[i] - minSum); // minSum = std::min(minSum, curSums[i]); // } // int maxSum = nums[0], minSum = min(0, nums[0]); // vector<int> curSums = {nums[0]}; // for(int i = 1; i < n; ++i) { // curSums.push_back( curSums[i - 1] + nums[i] ); // maxSum = std::max(maxSum, curSums[i] - minSum); // minSum = std::min(minSum, curSums[i]); // } int maxSum = nums[0], curSum = nums[0]; for (int i = 1; i < n; ++i) { curSum = std::max(nums[i], curSum + nums[i]); maxSum = std::max(maxSum, curSum); } cout << maxSum << endl; return 0; }