#include <climits> #include <iostream> #include<vector> using namespace std; int main(){ int n;cin>>n; vector<int> arr(n); for(int i=0;i<n;i++) cin>>arr[i]; vector<vector<int>> dp(n,vector(5,0)); //初始化: dp[0][1]=-arr[0]; dp[0][3]=-arr[0]; for(int i=1;i<n;i++){ dp[i][0]=dp[i-1][0];//不进行任何操作 //获取第一次买入最少的花销,该花销为上一时刻买入和当前时刻买入的最大值 dp[i][1]=max(dp[i-1][1],dp[i-1][0]-arr[i]); //获取第一次卖出最大的收益,该收益为上一时刻卖出和当前时刻卖出的最大值 dp[i][2]=max(dp[i-1][2],dp[i-1][1]+arr[i]); //获取第二次买入最少的花销,该花销为上一时刻买入和当前时刻买入的最大值 dp[i][3]=max(dp[i-1][3],dp[i-1][2]-arr[i]); //获取第二次卖出最大的收益,该收益为上一时刻卖出和当前时刻卖出的最大值 dp[i][4]=max(dp[i-1][4],dp[i-1][3]+arr[i]); } cout<<dp[n-1][4]; return 0; } // 64 位输出请用 printf("%lld")