티스토리 뷰

d[i] : a[i]를 마지막에 포함하는 가장 큰 연속합

d[i]=max(d[i-1]+a[i], a[i]) 


정답 : max(d[i])


#include <iostream>

#include <algorithm>

using namespace std;


int d[100001];

int a[100001];

int main(void) {

int n;

cin >> n;

for (int i = 1; i <= n; i++) {

cin >> a[i];

}


d[1] = a[1];

for (int i = 2; i <= n; i++) {

d[i] = max(d[i - 1] + a[i], a[i]);

}


int result = d[1];

for (int i = 2; i <= n; i++) {

if (result < d[i])

result = d[i];

}

cout << result << endl;

return 0;

}

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함