Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int dp[251][251][251];
- int vis[251][251][251],id=0;
- class Solution {
- public:
- int minXor(vector<int>& nums, int k) {
- int n=nums.size();
- for(int i=1;i<n;i++)nums[i]^=nums[i-1];
- auto calc=[&](int l,int r)->int{
- return nums[r]^(l?nums[l-1]:0);
- };
- auto rec=[&](auto &self,int l,int r,int rem)->int{
- if(rem>n-l)return 2e9;
- if(l==n)return 0;
- if(r>=n)return 2e9;
- if(rem==0)return 2e9;
- int &ret=dp[l][r][rem];
- if(vis[l][r][rem]==id)return ret;
- vis[l][r][rem]=id;
- ret=min(self(self,l,r+1,rem),max(calc(l,r),self(self,r+1,r+1,rem-1)));
- return ret;
- };
- id++;
- return rec(rec,0,0,k);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment