Submission #1179025

#TimeUsernameProblemLanguageResultExecution timeMemory
1179025woohyun_jngLibrary (JOI18_library)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; void Solve(int N); namespace { struct Judge { int N; int A[1002]; int pos[1002]; bool f[1002]; int query_c; bool answered; void init() { query_c = 0; int ret = scanf("%d", &N); ret++; answered = false; for (int i = 0; i < N; i++) ret = scanf("%d", &A[i]), pos[A[i]] = i; } int query(const vector<int> &M) { if (query_c == 20000) { puts("Wrong Answer [3]"); exit(0); } if (int(M.size()) != N) { puts("Wrong Answer [1]"); exit(0); } bool all_zero = true; for (int i = 0; i < N; i++) { if (M[i] != 0 && M[i] != 1) { puts("Wrong Answer [2]"); exit(0); } if (M[i] == 1) all_zero = false; } if (all_zero) { puts("Wrong Answer [2]"); exit(0); } memset(f, 0, sizeof(f)); for (int i = 0; i < N; i++) if (M[i]) f[pos[i + 1]] = true; bool las = false; int r = 0; for (int i = 0; i < N; i++) { if (las == false && f[i] == true) r++; las = f[i]; } query_c++; return r; } void answer(const vector<int> &res) { bool f1 = true, f2 = true; if (int(res.size()) != N) { puts("Wrong Answer [4]"); exit(0); } if (answered) { puts("Wrong Answer [7]"); exit(0); } answered = true; memset(f, 0, sizeof(f)); for (int i = 0; i < N; i++) { if (res[i] <= 0 || res[i] > N) { puts("Wrong Answer [5]"); exit(0); } if (f[res[i]]) { puts("Wrong Answer [6]"); exit(0); } f[res[i]] = true; } for (int i = 0; i < N; i++) { f1 &= A[i] == res[i]; f2 &= A[i] == res[N - i - 1]; } if (!f1 && !f2) { puts("Wrong Answer [8]"); exit(0); } } void end() { if (!answered) puts("Wrong Answer [7]"); else printf("Accepted : %d\n", query_c); } } judge; } // namespace int Query(const vector<int> &M) { return judge.query(M); } void Answer(const vector<int> &res) { judge.answer(res); } vector<int> ans; bool chk[1001]; int N; int query(vector<int> &Q) { int cnt = accumulate(Q.begin(), Q.end(), 0); return cnt - Query(Q); } int get(int X, vector<int> arr) { int S = arr.size(), A, B; if (S == 1) return arr[0]; if (X == 0) { for (int i : arr) cout << i << " "; cout << "sex\n"; } vector<int> L, R, T(N, 0); for (int i = 0; i < S / 2; i++) L.push_back(arr[i]), T[arr[i]] = 1; for (int i = S / 2; i < S; i++) R.push_back(arr[i]); A = query(T); T[X] = 1, B = query(T); if (B - A >= 1) return get(X, L); else return get(X, R); } void Solve(int n) { N = n; vector<int> Q(N, 1); if (N == 1) { ans.push_back(1); Answer(ans); return; } for (int i = 0; i < N; i++) { Q[i] = 0; if (query(Q) == N - 2) { ans.push_back(i), chk[i] = true; break; } Q[i] = 1; } for (int i = 1; i < N; i++) { Q.clear(); for (int j = 0; j < N; j++) { if (chk[j]) continue; Q.push_back(j); } ans.push_back(get(ans[i - 1], Q)), chk[ans[i]] = true; } for (int i = 0; i < N; i++) { cout << ans[i] << " "; ans[i]++; } Answer(ans); } int main() { judge.init(); Solve(judge.N); judge.end(); }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccg93EHM.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccSZLwiE.o:library.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccg93EHM.o: in function `Answer(std::vector<int, std::allocator<int> > const&)':
grader.cpp:(.text+0x0): multiple definition of `Answer(std::vector<int, std::allocator<int> > const&)'; /tmp/ccSZLwiE.o:library.cpp:(.text+0x180): first defined here
/usr/bin/ld: /tmp/ccg93EHM.o: in function `Query(std::vector<int, std::allocator<int> > const&)':
grader.cpp:(.text+0x240): multiple definition of `Query(std::vector<int, std::allocator<int> > const&)'; /tmp/ccSZLwiE.o:library.cpp:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status