Untitled
unknown
plain_text
2 years ago
2.0 kB
5
Indexable
/****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl, C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog. Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <iostream> #include <vector> using namespace std; vector <bool> used; vector <pair<int, int> > s, ans; vector <vector<int>> x; int n, k; void go(int pos) { if (pos >= n) { bool ok = 1; //for (auto [a, b] : s) cout << a << " " << b << endl; //cout << endl; for (int i = 0; i < k; i++) { int L = -1e9, R = 1e9; for (auto [a, b] : s) { int vala = x[a][i]; int valb = x[b][i]; if (vala > valb) swap(vala, valb); L = max(L, vala); R = min(R, valb); } if (L > R) { ok = 0; break; } } if (ok) { ans = s; } return; } if (used[pos]) go(pos + 1); else { for (int j = pos + 1; j < n; j++) { if (!used[j]) { used[j] = true; s.push_back({pos, j}); go(pos + 1); s.pop_back(); used[j] = false; } } } } int main() { cin >> n >> k; x.resize(n); for (int i = 0; i < n; i++) { x[i].resize(k); for (int j = 0; j < k; j++) cin >> x[i][j]; } used.resize(n); for (int i = 0; i < n; i++) used[i] = false; go(0); if (ans.size() > 0) { cout << "YES\n"; for (auto [a, b] : ans) { cout << a + 1 << " " << b + 1 << endl; } } else { cout << "NO"; } return 0; }
Editor is loading...