#include using namespace std; class Solution { public: int maxScore1(vector& cardPoints, int k) { const int len = 1e5+10; const int siz = cardPoints.size(); int h2t_state[len][2]= {}, t2h_state[len][2] = {}; h2t_state[0][1] = cardPoints[0]; t2h_state[siz-1][1] = cardPoints[siz - 1]; for(int i = 2 ; i <= k ; i++){ int idx = i%2; for(int j = 0 ; j < i ; j++){ // h2t_state[j][idx] = t2h_state[siz-j-1][1-idx] + cardPoints[j]; // t2h_state[siz-j-1][idx] = h2t_state[j][1-idx] + cardPoints[siz-j-1]; if(j == 0){ h2t_state[j][idx] = t2h_state[siz - i + 1][1-idx] + cardPoints[j]; t2h_state[siz-j-1][idx] = h2t_state[ i - 2 ][1-idx] + cardPoints[siz-j-1]; }else{ h2t_state[j][idx] = h2t_state[j-1][1-idx] + cardPoints[j]; t2h_state[siz-j-1][idx] = t2h_state[siz-j][1-idx] + cardPoints[siz-j-1]; } } // cout<<"i: "<& cardPoints, int k){ int sum = 0; int ans = 0; int sz = cardPoints.size(); for(int i = 0 ; i < k ; i++) sum+=cardPoints[i]; ans = sum; for(int i = 0 ; i < k ; i++){ sum-=cardPoints[k - i - 1]; sum+=cardPoints[sz - 1 - i]; ans = max(ans, sum); cout< ex1 = {1,2,3,4,5,6,1}; int k1 = 3; cout< ex2 = {2,2,2}; int k2 = 2; cout< ex3 = {9,7,7,9,7,7,9}; int k3 = 7; cout<