题解:B4100 [CSP-X2023 山东] 赚钱

· · 题解

思路

无论在哪里卖出去,都一定要在前面的最小值处买进。

考虑维护自己前面的最小值,再一个一个找出答案最大值。

AC CODE

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<map>
#include<list>
#include<stack>
#include<cctype>
#include<cstdlib>
#include<utility>
#include<set>
#include<bitset>
using namespace std;
inline int read(){
    int x=0,f=1;char ch=getchar();
    while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    while (ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-48;ch=getchar();}
    return x*f;
}
inline void write(int x) {
    if (x<0)x=-x,putchar('-');
    if (x>9)write(x/10);
    putchar(x%10+'0');
}
const int N=1e6;
int n=read(),minn=114514114,ans=-1e9,a[N];
int main(){
    for(int i=1;i<=n;i++){
        a[i]=read();
    }
    for(int i=1;i<=n;i++){
        ans=max(ans,a[i]-minn);
        minn=min(minn,a[i]);
    }
    cout<<ans;
    return 0;
}