判断要查找的数在不在这一行的范围内,然后2分查找就行了
#include<cstdio>
#include<cstring>
int a[1111][1111];
int n,m;
int t;
bool fun(int n)
{
int l=0,r=m-1,mid;
while(l <= r)
{
mid=(l+r)/2;
if(a[n][mid] > t)
{
r=mid-1;
}
else if(a[n][mid] < t)
{
l=mid+1;
}
else
return 1;
}
return 0;
}
int main()
{
while(scanf("%d%d%d",&n,&m,&t) != EOF)
{
for(int i=0;i<n;++i)
{
for(int j=0;j<m;++j)
{
scanf("%d",&a[i][j]);
}
}
bool flag=0;
for(int i=0;i<n;++i)
{
if(a[i][0] <= t && a[i][m-1] >= t)
{
if(fun(i))
{
flag = 1;
break;
}
}
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}