// Forward declaration of queryAPI. // int query(int x, int y); // return int means matrix[x][y].
classSolution { public: vector<int> getMinimumValue(int n){ typedeflonglong LL; const LL INF = 1e15; int l = 0, r = n - 1; while (l <= r) { int mid = l + r >> 1; //取列最小值 LL y, k = INF; for (int i = 0; i < n; ++ i) { int t = query(i, mid); if (k > t) k = t, y = i; }
if (l == r) return {y, l};
//判断边界 LL left = mid ? query(y, mid - 1) : INF; LL right = mid < n - 1 ? query(y, mid + 1) : INF;
if (k < left && k < right) return {y, mid}; if (k > left) r = mid - 1; else l = mid + 1; } return {-1, -1}; } }