Submission #144581

#TimeUsernameProblemLanguageResultExecution timeMemory
144581SamAndZagonetka (COI18_zagonetka)C++17
0 / 100
3060 ms400 KiB
#include <bits/stdc++.h> using namespace std; const int N = 102; int n; int a[N]; int b[N][N]; int minu[N], maxu[N]; bool stg(int a[], int i) { for (int j = 1; j <= n; ++j) { if (b[i][j]) { if (b[i][j] == -1 && a[i] > a[j]) return false; if (b[i][j] == 1 && a[i] < a[j]) return false; } } return true; } int main() { cin >> n; for (int i = 1; i <= n; ++i) cin >> a[i]; for (int i = 1; i <= n; ++i) { for (int j = i + 1; j <= n; ++j) { swap(a[i], a[j]); cout << "query"; for (int k = 1; k <= n; ++k) cout << ' ' << a[k]; cout << endl; swap(a[i], a[j]); int x; cin >> x; if (x == 0) { if (a[i] < a[j]) { b[i][j] = -1; b[j][i] = 1; } if (a[i] > a[j]) { b[i][j] = 1; b[j][i] = -1; } } } } for (int i = 1; i <= n; ++i) minu[i] = maxu[i] = a[i]; sort(a + 1, a + n + 1); do { bool z = true; for (int i = 1; i <= n; ++i) { if (!stg(a, i)) { z = false; break; } } if (z) { for (int i = 1; i <= n; ++i) { if (a[i] == minu[i]) continue; if (a[i] < minu[i]) { for (int j = 1; j <= n; ++j) minu[j] = a[j]; } break; } for (int i = 1; i <= n; ++i) { if (a[i] == maxu[i]) continue; if (a[i] > maxu[i]) { for (int j = 1; j <= n; ++j) maxu[j] = a[j]; } break; } } } while (next_permutation(a + 1, a + n + 1)); cout << "end" << endl; for (int i = 1; i <= n; ++i) cout << minu[i] << ' '; cout << endl; for (int i = 1; i <= n; ++i) cout << maxu[i] << ' '; cout << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...