Link to this code: https://cses.fi/paste/7895727ce6f95b647c0701/
#include <bits/stdc++.h>
using namespace std; 

#define fst first
#define snd second 

typedef long long ll; 
typedef pair<int, int> ii; 

const ll LINF = (ll)1e18; 
const int INF = (int)1e9;

const int N = (int)2e5 + 5;  

int n; 
int x[N]; 
ll sum[N]; 
// có mảng sum[N] là tổng tiền tố của mảng x[N]
// công thức lấy tổng đoạn [l, r] của x: sum[r] - sum[l - 1]
// sum[r] - sum[l] (lấy tổng của đoạn [l + 1, r])
// l + 1 <= r    
// l <= r - 1 
// Viết lại bài toán là tìm hai chỉ số (l, r) (l < r) sum[r] - sum[l] lớn nhất 

int main() {
	ios::sync_with_stdio(0); 
	cin.tie(0); 
	cin >> n;  
	for (int i = 1; i <= n; i++) {
		cin >> x[i]; 
		sum[i] = sum[i - 1] + x[i];  
	}

	// sum[r] - sum[l]  
	// mình for r, đã biết được sum[r], bài toán còn lại là tìm l sao cho sum[r] - sum[l] lớn nhất 
	// => sum[l] càng nhỏ càng tốt
	ll ans = -LINF;      
	ll min_sum_l = 0;
	for (int r = 1; r <= n; r++) {
		ll max_sum = sum[r] - min_sum_l;
		ans = max(ans, max_sum);    
		min_sum_l = min(min_sum_l, sum[r]);   
	}

	cout << ans << '\n'; 
}