i번째 원소 탐색 시, 현재까지의 최소값을 구한 후 i번째 원소-최솟값과 DP[i-1] 값을 비교해 더 큰 것을 DP[i]에 저장하고 최종적으로 DP[N-1] 값을 출력하였다.
코드
#include <stdio.h>
int A[200000], DP[200000];
int main() {
int N, min;
scanf("%d", &N);
for (int i = 0; i < N; i++) scanf("%d", &A[i]);
DP[0] = 0, min = A[0];
for (int i = 1; i < N; i++) {
if (A[i] < min) min = A[i];
DP[i] = A[i] - min > DP[i - 1] ? A[i] - min : DP[i - 1];
}
printf("%d", DP[N - 1]);
return 0;
}