这个题其实是个经典题:即求$max${$a_i-a_j|j<i$}
扫一遍数列,维护最小值$minv$,用$a_i-minv$更新答案即可。
#include<iostream>
#include<cstdio>
typedef long long ll;
int main()
{
ll n,ans=0,minv=1<<28;
scanf("%lld",&n);
for(ll i=1;i<=n;++i)
{
ll x;
scanf("%lld",&x);
ans=std::max(ans,x-minv);
minv=std::min(minv,x);
}
printf("%lld",ans);
return 0;
}