一道简单的C++题目,求这段代码哪里错了,求正确代码!!!!

马鞍数
题目描述
求一个n×m数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大的数。如下: n=5 m=5
5 6 7 8 9
4 5 6 7 8
3 4 5 2 1
2 3 4 9 0
1 2 5 4 8
则1行1列上的数5就是马鞍数。
输入格式
第一行一个整数t,表示有t组测试数据(t<=10)。
每组测试数据第一行: n m (0<n,m<=10)
第2到n+1行:每行m个整数(每个数都<10)
输出格式
每组测试数据输出若干行:
如果存在马鞍数,则输出所有马鞍数,每行一个,为行和列以及马鞍数。
如果不存在马鞍数,则输出一行“not exit”(注意:不包括双引号)。
输入输出样例
输入样例
1
9 8
9 8 7 6 5 4 3 2
8 8 9 9 9 9 9 9
3 7 7 6 5 4 2 1
8 8 3 2 1 7 3 2
7 5 3 2 9 1 3 2
6 3 2 1 9 3 1 3
8 2 1 3 5 8 9 1
1 3 2 1 3 5 6 8
9 3 1 2 3 4 5 8
输出样例
2 2 8

#include<bits/stdc++.h>
using namespace std;
int main(){
    int t,n,m,i,j;
    int col[12],row[12],a[12][12];
    bool flag=false;
    cin>>t;
    for(int k=1;k<=t;k++){
        cin>>n>>m;
        for(i=1;i<=n;i++)row[i]=INT_MAX;
        for(j=1;j<=m;j++)col[j]=INT_MIN;
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++){
                cin>>a[i][j];
                if(a[i][j]<row[i])row[i]=a[i][j];
                if(a[i][j]>col[j])col[j]=a[i][j];
            }
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++){
                if(a[i][j]==row[i]&&a[i][j]==col[j]){
                    cout<<i<<" "<<j<<" "<<a[i][j]<<endl;
                    flag=true;
                }
            }
            if(!flag)cout<<"not exit"<<endl;
    }

    return 0;
}

https://zhidao.baidu.com/question/1704818162362746620.html

#include
using namespace std;
int main(){
int t,n,m,i,j;
int col[12],row[12],a[12][12];

cin>>t;
for(int k=1;k<=t;k++){
    bool flag=false;
    cin>>n>>m;
    for(i=1;i<=n;i++)row[i]=INT_MAX;
    for(j=1;j<=m;j++)col[j]=INT_MIN;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++){
            cin>>a[i][j];
            if(a[i][j]<row[i])row[i]=a[i][j];
            if(a[i][j]>col[j])col[j]=a[i][j];
        }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++){
            if(a[i][j]==row[i]&&a[i][j]==col[j]){
                cout<<i<<" "<<j<<" "<<a[i][j]<<endl;
                flag=true;
            }
        }
        if(!flag)cout<<"not exit"<<endl;
}

return 0;

}

AC代码:
#include <bits/stdc++.h>
using namespace std;
bool flag;
int n, m, a[11][11], ans, mn[11], mx[11], row[11], column[11];
int main()
{
scanf("%d %d", &n, &m);
for(int i=1; i<=n; ++i){
mn[i]=10;
for(int j=1; j<=m; ++j){
scanf("%d", &a[i][j]);
mx[j]=a[i][j];
}
}
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
//mn[i]表示第i行的最小值
mn[i]=min(mn[i], a[i][j]);
}
}
for(int i=1; i<=m; ++i){ //枚举列
for(int j=1; j<=n; ++j){ //枚举行
//mx[i]表示第i列的最大值
mx[i]=max(mx[i], a[j][i]);
}
}
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
//第i行第j列的数等于第i行的最小值,并且等于第j列的最大值
if(a[i][j]==mn[i] && a[i][j]==mx[j]){
printf("%d %d %d\n", i, j, a[i][j]);
flag=true;
}
}
}
if(flag==false){
printf("not exit");
}
return 0;
}
/**************************************************************
Problem: 1152
User: zhaotengchen37
Language: C++
Result: 正确
Time:21 ms
Memory:2176 kb
****************************************************************/