AhmedAshraff

Untitled

Jun 29th, 2025
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. int dp[251][251][251];
  2. int vis[251][251][251],id=0;
  3. class Solution {
  4. public:
  5.     int minXor(vector<int>& nums, int k) {
  6.         int n=nums.size();
  7.        
  8.         for(int i=1;i<n;i++)nums[i]^=nums[i-1];
  9.         auto calc=[&](int l,int r)->int{
  10.             return nums[r]^(l?nums[l-1]:0);
  11.         };
  12.         auto rec=[&](auto &self,int l,int r,int rem)->int{
  13.             if(rem>n-l)return 2e9;
  14.             if(l==n)return 0;
  15.             if(r>=n)return 2e9;
  16.             if(rem==0)return 2e9;
  17.             int &ret=dp[l][r][rem];
  18.             if(vis[l][r][rem]==id)return ret;
  19.             vis[l][r][rem]=id;
  20.             ret=min(self(self,l,r+1,rem),max(calc(l,r),self(self,r+1,r+1,rem-1)));
  21.             return ret;
  22.         };
  23.         id++;
  24.         return rec(rec,0,0,k);
  25.     }
  26. };
Advertisement
Add Comment
Please, Sign In to add comment