题解:B4100 [CSP-X2023 山东] 赚钱
joker_opof_qaq · · 题解
思路
无论在哪里卖出去,都一定要在前面的最小值处买进。
考虑维护自己前面的最小值,再一个一个找出答案最大值。
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;
}