AcWing 1058. 股票买卖 V
原题链接
中等
作者:
wjie
,
2020-07-10 12:25:58
,
所有人可见
,
阅读 422
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 1e5 + 5;
int f[N][3], arr[N];
int main()
{
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &arr[i]);
memset(f, -0x3f, sizeof(f));
f[1][0] = -arr[1];
f[1][1] = 0;
f[1][2] = 0;
for (int i = 2; i <= n; ++i)
{
f[i][0] = max(f[i-1][0], f[i-1][2]-arr[i]);
f[i][1] = f[i-1][0] + arr[i];
f[i][2] = max(f[i-1][2], f[i-1][1]);
}
printf("%d", max(f[n][1], f[n][2]));
return 0;
}