vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {
priority_queue<tuple<int,int,int>> q;
int n = nums1.size(),m = nums2.size();
for(int i = 0;i < min(n,k);i++){
q.push({-nums1[i] - nums2[0],i,0});
}
vector<vector<int>> ans;
while(!q.empty() && ans.size() < k){
auto [_,i,j] = q.top();
q.pop();
ans.push_back({nums1[i],nums2[j]});
//规定 (i - 1,j) (i,j -1) , 只要一个增大到 (i,j)
if(j + 1 < m)
q.push({-nums1[i] - nums2[j + 1],i,j + 1});
}
return ans;
}