$O(n)$
dp[i]=max(dp[j] : a[i]>a[j])+a[i]
#include<cstdio> #include<algorithm> using namespace std; int n, a[1001], dp[1001]; int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", a + i); for (int j = 0; j < i; j++) dp[i] = max(dp[i], dp[j] * (a[i]>a[j]) + a[i]); } printf("%d", *max_element(dp, dp + n + 1)); return 0; }
댓글 없음 :
댓글 쓰기