fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4.  
  5. int main(){
  6. ios::sync_with_stdio(false);
  7. cin.tie(nullptr);
  8.  
  9. int t;
  10. cin >> t;
  11. while (t--) {
  12. ll n, m;
  13. cin >> n >> m;
  14. vector<vector<ll>> v(n, vector<ll>(m));
  15. // سنخزن كل عنصر مع موقعه في p
  16. vector<pair<ll, pair<ll,ll>>> p;
  17. p.reserve(n * m);
  18.  
  19. for (ll i = 0; i < n; i++) {
  20. for (ll j = 0; j < m; j++) {
  21. cin >> v[i][j];
  22. p.push_back({v[i][j], {i, j}});
  23. }
  24. }
  25.  
  26. // نرتب تنازليًا حسب القيمة
  27. sort(p.begin(), p.end(),
  28. [](auto &A, auto &B){
  29. return A.first > B.first;
  30. });
  31.  
  32. // إذا المصفوفة فاضية – حالة نظرية
  33. if (p.empty()) {
  34. cout << -1 << "\n";
  35. continue;
  36. }
  37.  
  38. // نأخذ أول أكبر عنصر ونحسب صفه وعموده
  39. ll r0 = p[0].second.first;
  40. ll c0 = p[0].second.second;
  41.  
  42. // نبحث أول عنصر لا يشترك لا في الصف r0 ولا في العمود c0
  43. ll ans = -1;
  44. for (size_t k = 1; k < p.size(); k++) {
  45. ll val = p[k].first;
  46. ll ri = p[k].second.first;
  47. ll cj = p[k].second.second;
  48. if (ri != r0 && cj != c0) {
  49. ans = val;
  50. break;
  51. }
  52. }
  53.  
  54. // لو ما لقيناش أي عنصر غير مشترك، نطبع -1 أو ممكن تطبع قيمة تناسب سياستك
  55. cout << ans << "\n";
  56. }
  57.  
  58. return 0;
  59. }
  60.  
Success #stdin #stdout 0.01s 5320KB
stdin
10
1 1
1
1 2
1 2
2 1
2
1
2 2
4 2
3 4
3 4
1 2 3 2
3 2 1 3
2 1 3 2
4 3
1 5 1
3 1 3
5 5 5
3 5 1
4 4
1 3 3 2
2 3 2 2
1 2 2 1
3 3 2 3
2 2
2 2
1 2
3 2
1 2
2 1
1 2
3 3
2 1 1
1 2 1
1 1 2
stdout
-1
-1
-1
4
3
5
3
2
2
2