3
int minChanges(vector<int> &nums, int k) {4
const auto n = nums.size();6
1 << static_cast<int>(ceil(log2(*max_element(nums.cbegin(), nums.cend()) + 1)));8
vector<unordered_map<int, int>> freq(k);9
for (int i = 0; i != n; ++i) {10
++freq[i % k][nums[i]];13
vector<int> dp(limit);14
vector<int> tmpdp(limit);15
int last_min = numeric_limits<int>::max();17
for (int j = 0; j != limit; ++j) {18
dp[j] = n / k + (n % k > 0) - freq[0][j];19
last_min = min(last_min, dp[j]);22
for (int i = 1; i != k; ++i) {23
int cnt = n / k + (n % k > i);24
int new_min = numeric_limits<int>::max();25
for (int j = 0; j != limit; ++j) {26
int mi = numeric_limits<int>::max();27
for (auto &[v, f] : freq[i]) {28
mi = min(mi, dp[j ^ v] - f);30
mi = min(mi, last_min);33
new_min = min(new_min, mi);