제출 #825171

#제출 시각아이디문제언어결과실행 시간메모리
825171vjudge1Library (JOI18_library)C++17
19 / 100
174 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); while (res.size() != N - 1) { int l = 1, r = N, nxt = -1; while (l <= r) { int mid = l + r >> 1; ask = vector<int>(N, 0); for (int i = 0; i < mid; i++) ask[i] = 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; } } assert(nxt != -1); res.emplace_back(nxt); } vector<int> vis(N, 0); for (int x : res) vis[x - 1] = 1; for (int i = 0; i < N; i++) { if (!vis[i]) res.emplace_back(i + 1); } Answer(res); }

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

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