Minimum Operations to Make the Array K-Increasing LeetCode solution in C++
1class Solution {2public:3int getlis(vector<int> &a) {4vector<int> v;5for (auto p : a) {6auto it = upper_bound(v.begin(), v.end(), p);7if (it == v.end()) {8v.push_back(p);9} else {10*it = p;11}12}13return v.size();14}15int kIncreasing(vector<int> &arr, int k) {16const int n = arr.size();17vector<vector<int>> v(k);18for (int i = 0; i < n; i++) {19v[i % k].push_back(arr[i]);20}2122int ans = 0;23for (int i = 0; i < k; i++) {24int lis = getlis(v[i]);25ans += v[i].size() - lis;26}27return ans;28}29};