제출 #825215

#제출 시각아이디문제언어결과실행 시간메모리
825215vjudge1Library (JOI18_library)C++17
100 / 100
245 ms336 KiB
#include "library.h" #include <bits/stdc++.h> #include <cstdio> #include <vector> using namespace std; void Solve(int N) { if (N == 1) return void(Answer({1})); vector<int> ask(N, 1); int start = -1; for (int i = 0; i < N; i++) { ask[i] = 0; if (Query(ask) == 1) { start = i; } ask[i] = 1; } assert(start != -1); vector<int> res(1, start + 1); vector<int> rem(N); iota(rem.begin(), rem.end(), 1); while (true) { for (int i = 0; i < rem.size(); i++) { if (rem[i] == res.back()) { swap(rem[i], rem.back()); rem.pop_back(); break; } } if (rem.size() == 1) { res.emplace_back(rem[0]); return void(Answer(res)); } int l = 1, r = rem.size(), nxt = -1; while (l <= r) { int mid = l + r >> 1; ask = vector<int>(N, 0); for (int i = 0; i < mid; i++) ask[rem[i] - 1] = 1; for (int i : res) ask[i - 1] = 1; int x = Query(ask); for (int i : res) ask[i - 1] = 0; int y = count(ask.begin(), ask.end(), 1) ? Query(ask) : 0; if (x == y) { nxt = mid; r = mid - 1; } else { l = mid + 1; } } res.emplace_back(rem[nxt - 1]); } }

컴파일 시 표준 에러 (stderr) 메시지

library.cpp: In function 'void Solve(int)':
library.cpp:25:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |                 for (int i = 0; i < rem.size(); i++) {
      |                                 ~~^~~~~~~~~~~~
library.cpp:38:37: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   38 |                         int mid = l + r >> 1;
      |                                   ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...