#include <vector>
#include <iostream>
using namespace std;
class Solution {
public:
int maxProfit(vector<int>& prices) {
int len=prices.size();
int dp1[len];
int dp2[len];
int max=0;
int minValue=prices[0];
int maxValue=prices[len-1];
//第1天到第i天之间股票最大值
dp1[0]=0;
//第i天到最后一天之间股票最大值
dp2[len-1]=0;
for (int i = 1; i < len; i++)
{
dp1[i]=(prices[i]-minValue)>dp1[i-1]?(prices[i]-minValue):dp1[i-1];
if(prices[i]<minValue){
minValue=prices[i];
}
dp2[len-1-i]=(maxValue-prices[len-1-i])>dp2[len-i]?(maxValue-prices[len-1-i]):dp2[len-i];
if (prices[len-1-i]>maxValue)
{
maxValue=prices[len-1-i];
}
}
//找出第1到第i天之间和第i天和最后一天之间,股票和的最大值
for (int i = 0; i < len; i++)
{
if (dp1[i]+dp2[i]>max)
{
max=dp1[i]+dp2[i];
}
}
return max;
}
};
int main(){
Solution s;
vector<int> v{2,1,4,5,2,9,7};
cout<<s.maxProfit(v);
return 0;
}