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 | //누적되는 부분합보다 새로운 수가 더 클 때 부분합을 다시 시작한다. #include <iostream> #include <algorithm> long long d[100050]; int num[100050]; using namespace std; int main() { int input; cin >> input; for (int i = 1; i <= input; ++i) { cin >> num[i]; } d[1] = num[1]; for (int i = 1; i <= input; ++i) { d[i] = d[i - 1] + num[i]; //새로 부분합을 시작하는 경우 if (d[i] < num[i]) d[i] = num[i]; } long long ans = d[1]; for (int i = 1; i <= input; ++i) ans = max(ans, d[i]); cout << ans << endl; return 0; } | cs |
'백준 온라인 저지' 카테고리의 다른 글
백준 2579: 계단 오르기 (0) | 2018.07.10 |
---|---|
백준 13398: 연속합 2 (0) | 2018.07.10 |
백준 11722: 가장 긴 감소하는 부분 순열 (0) | 2018.07.09 |
백준 11053: 가장 긴 증가하는 부분 순열 (0) | 2018.07.09 |
백준 2156: 포도주 시식 (0) | 2018.07.09 |