O(n)
최대연속부분합을 응용한다.
p: 최대연속부분합
q: 중간 1개를 제외한 최대연속부분합
#include<cstdio> #include<algorithm> using namespace std; int p = -1e9, q, n, x, r = -1e9; int main() { for (scanf("%d", &n); n--;) { scanf("%d", &x); q = max(p, q + x); p = max(p + x, x); r = max({ r,p,q }); } printf("%d", r); return 0; }
댓글 없음 :
댓글 쓰기