202 const int new_size = cache_[0].size();
203 const int old_size = cache_[1].size();
204 if (old_size >= new_size)
return;
208 if (cache_.size() < num_rows) cache_.resize(num_rows);
210 cache_[1].resize(new_size);
212 for (
int row = 1; row < num_rows; ++row) {
213 const int half_window = 1 << (row - 1);
214 const int last_col = new_size - 2 * half_window;
215 if (cache_[row].size() <= last_col) cache_[row].resize(last_col + 1);
216 for (
int col = old_size; col <= last_col; ++col) {
217 cache_[row][col] = std::min(cache_[row - 1][col],
218 cache_[row - 1][col + half_window], cmp_);