제출 #144674

#제출 시각아이디문제언어결과실행 시간메모리
144674SamAndZagonetka (COI18_zagonetka)C++17
9 / 100
64 ms376 KiB
#include <bits/stdc++.h> using namespace std; const int N = 102; int n; int a[N]; int minu[N], maxu[N]; bool qry(int a[]) { cout << "query"; for (int k = 1; k <= n; ++k) cout << ' ' << a[k]; cout << endl; int x; cin >> x; return x; } void endf(int i, int j) { if (a[i] < a[j]) { for (int k = 1; k <= n; ++k) minu[k] = k; int z = n + 1; for (int k = 1; k <= n; ++k) { if (k == i) { maxu[j] = --z; minu[k] = --z; continue; } if (k == j) { continue; } maxu[k] = --z; } } else { int z = 0; for (int k = 1; k <= n; ++k) { if (k == i) { minu[j] = ++z; minu[k] = ++z; continue; } if (k == j) { continue; } minu[k] = ++z; } for (int k = 1; k <= n; ++k) maxu[k] = n - k + 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; } int c[N]; int main() { cin >> n; for (int i = 1; i <= n; ++i) cin >> a[i]; if (n <= 6) { for (int i = 1; i <= n; ++i) minu[i] = maxu[i] = a[i]; sort(a + 1, a + n + 1); do { if (qry(a)) { 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; } else { int qq = 0; for (int i = 1; i <= n; ++i) { for (int j = i + 1; j <= n; ++j) { swap(a[i], a[j]); if (qry(a) == 0) { ++qq; c[i]++; c[j]++; } swap(a[i], a[j]); } } int ii = -1, jj = -1; for (int i = 1; i <= n; ++i) { if (c[i] == qq) { if (ii == -1) ii = i; else jj = i; } } endf(ii, jj); } 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...