class Solution {
public int counter(int[][] matrix,int k,int mid){
int r = matrix.length;
int c = matrix[0].length;
int count = 0;
for(int i=0;i<r;i++){
for(int j=c-1;j>=0;j=j-1){
if(matrix[i][j]<=mid){
count=count +j+1;
break;
}
}
}
return count;
}
public int kthSmallest(int[][] matrix, int k) {
int r = matrix.length;
int c = matrix[0].length;
int l = matrix[0][0];
int h = matrix[r-1][c-1];
while(l<h){
int mid = ((h-l)/2+l);
int count = counter(matrix,k,mid);
if(count>=k){
h=mid;
}else{
l=mid+1;
}
}
return l;
}
}