#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int num[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>num[i][j];
}
}
//使用暴力法遍历所有
for(int i=0;i<n;i++){
int minn = 9999999; //记录符合上级仓库的最小值
for(int j=0;j<n;j++){
if(i == j) continue;//跳过自身
int flag = 1 ;
for(int k=0;k<m;k++){
//如果有一维不满足则跳过
if(num[j][k]<=num[i][k]) {
flag =0;
break;
}
//如果均没有跳过则说明符合上级仓库的定义
}
//在所有维对比完成后才能确定是否满足上级仓库的定义
if(flag) {
minn = min(minn,j+1);
continue;//由于查找序号升序,所以查找到的第一个满足上级仓库即为满足题意的序号
}
}
if(minn == 9999999) cout<<0<<endl;
else cout<<minn<<endl;
}
return 0;
}
本题数据规模较小(10^7)使用暴力法可以完成。