思路:对于当前要处理的 A[i] 只需要保存A[0] 到 A[i] 之间的最大值,然后减去A[i+1]。
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int maxn = 100010; int A[maxn]; int n; int work() { int ans = A[0] - A[1]; int maxv = A[0]; for(int i = 1; i < n; i++) { ans = max(ans, maxv-A[i]); if(A[i] > maxv) maxv = A[i]; } return ans; } int main() { int T; scanf("%d", &T); while(T--) { scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", &A[i]); } int ans = work(); printf("%d\n", ans); } return 0; }
Open Credit System UVa 11078,布布扣,bubuko.com
原文:http://blog.csdn.net/achiberx/article/details/20942041