class Solution {
public:
bool searchArray(vector<vector<int>> array, int target) {
if (array.size()<1) return false;
queue<pair<int,int>> q;
pair<int,int> p;
p = make_pair(0,0);
q.push(p);
int vis[array.size()][array[0].size()];
memset(vis,0,sizeof(vis));
while(!q.empty()){
pair<int,int> c = q.front();
int x = c.first;
int y = c.second;
q.pop();
if (array[x][y] == target){
return true;
}
if (x+1 < array.size()){
if (array[x+1][y] < target && !vis[x+1][y] ){
vis[x+1][y] = 1;
q.push(make_pair(x+1,y));
}
else if(array[x+1][y] == target){
return true;
}
}
if (y+1 < array[0].size()){
if (array[x][y+1] < target && !vis[x][y+1]){
vis[x][y+1] = 1;
q.push(make_pair(x,y+1));
}
else if(array[x][y+1] == target){
return true;
}
}
}
return false;
}
};