循环展开其实没啥用处,不知道咋优化了。暴力吧
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int32_t main() {
size_t n, m;
cin >> n >> m;
vector<vector<int32_t>> A(n, vector<int32_t>(m, 0));
for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < m; ++j) {
cin >> A[i][j];
}
}
// enum
for (size_t i = 0; i < n; ++i) {
size_t pos = 0;
for (size_t j = 0; j < n; ++j) {
if (i == j) continue;
bool f = true;
// for (size_t k = 0; k < m; ++k) {
// if (A[i][k] >= A[j][k]) {f = false; break;}
// }
switch (m) {
case 10: if (A[i][9] >= A[j][9]) {f = false; break;};
case 9: if (A[i][8] >= A[j][8]) {f = false; break;}
case 8: if (A[i][7] >= A[j][7]) {f = false; break;}
case 7: if (A[i][6] >= A[j][6]) {f = false; break;}
case 6: if (A[i][5] >= A[j][5]) {f = false; break;}
case 5: if (A[i][4] >= A[j][4]) {f = false; break;}
case 4: if (A[i][3] >= A[j][3]) {f = false; break;}
case 3: if (A[i][2] >= A[j][2]) {f = false; break;}
case 2: if (A[i][1] >= A[j][1]) {f = false; break;}
case 1: if (A[i][0] >= A[j][0]) {f = false; break;}
}
if (f) {pos = j + 1; break;}
}
cout << pos << "\n";
}
}