class Solution {
public:
bool PredictTheWinner(vector<int>& nums) {
int N = nums.size();
int dpA[N+1][N+1];
int dpB[N+1][N+1];
memset(dpA,0,sizeof(dpA));
memset(dpB,0,sizeof(dpB));
for(int i=0;i<N;i++){
dpA[i][i] = nums[i];
for(int j=i-1;j>=0;j--){
dpA[j][i] = max(dpB[j+1][i] + nums[j],dpB[j][i-1] + nums[i]);
dpB[j][i] = min(dpA[j+1][i],dpA[j][i-1]);
}
}
return dpA[0][N-1] >= dpB[0][N-1];
}
};