#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAX = 1001;
int n;
int arr[MAX];
int minsum[MAX];
int calminsum() {
minsum[1] = arr[1];
for (int i = 2; i <= n; i++) {
int maxs = 0, index = 0;
for (int k = i - 1; k >= 1; k--) {
if (arr[k] < arr[i]) {
if (maxs < minsum[k]) {
maxs = minsum[k];
index = k;
}
}
}
minsum[i] = arr[i] + minsum[index];
}
int result = minsum[1];
for (int i = 2; i <= n; i++) {
result = max(result, minsum[i]);
}
return result;
}
int main(void) {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> arr[i];
}
cout << calminsum();
}
'백준 알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글
백준 11722번 C++ (0) | 2019.01.23 |
---|---|
백준 11051번 C++ (0) | 2019.01.21 |
백준 1699번 C++ (0) | 2019.01.21 |
백준 11048번 C++ (0) | 2019.01.18 |
백준 2167번 C++ (0) | 2019.01.17 |