제출 #395716

#제출 시각아이디문제언어결과실행 시간메모리
395716Victor도서관 (JOI18_library)C++17
0 / 100
50 ms376 KiB
#include "library.h" #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i < (b); ++i) #define per(i, a, b) for (int i = b - 1; i >= (a); --i) #define trav(a, x) for (auto& a : x) #define all(x) x.begin(), x.end() #define sz(x) x.size() #define pb push_back #define umap unordered_map #define uset unordered_set typedef pair<int, int> ii; typedef pair<int, ii> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<vi> vvi; typedef long long ll; const int INF = 1000000007; vi dummy; int book = 0; uset<int> queried; int binsearch(vi books) { vi qvec = dummy; qvec[book] = 1; if (sz(books) == 1) { qvec[books[0]] = 1; if (Query(qvec) != 1) return -1; else return books[0]; } int take = sz(books) >> 1; rep(i, 0, take) qvec[books[i]] = 1; int moves = Query(qvec); qvec[book] = 0; vi nbooks; if (Query(qvec) < moves) rep(i, take, sz(books)) nbooks.push_back(books[i]); else rep(i, 0, take) nbooks.push_back(books[i]); return binsearch(nbooks); } void Solve(int n) { dummy.resize(n); vi ans(n); int rgt[n]; memset(rgt, -1, sizeof(rgt)); while (book != -1 && sz(queried) + 1 != n) { queried.insert(book); vi vec; rep(i, 0, n) if (!queried.count(i)) vec.push_back(i); int next = binsearch(vec); rgt[book] = next; book = next; } int x=n-sz(queried); book = 0; while (book != -1 && sz(queried) + 1 != n) { queried.insert(book); vi vec; rep(i, 0, n) if (!queried.count(i)) vec.push_back(i); int next = binsearch(vec); rgt[next] = book; book = next; } int cnt = 1; rep(i, 0, n) { if(i<n&&book==-1)cout<<123<<endl; ans[i] = book + 1; book = rgt[book]; } Answer(ans); }

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

library.cpp: In function 'int binsearch(vi)':
library.cpp:7:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 | #define rep(i, a, b) for (int i = a; i < (b); ++i)
      |                                        ^
library.cpp:52:9: note: in expansion of macro 'rep'
   52 |         rep(i, take, sz(books)) nbooks.push_back(books[i]);
      |         ^~~
library.cpp: In function 'void Solve(int)':
library.cpp:66:42: warning: comparison of integer expressions of different signedness: 'std::unordered_set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   66 |     while (book != -1 && sz(queried) + 1 != n) {
      |                                          ^
library.cpp:79:42: warning: comparison of integer expressions of different signedness: 'std::unordered_set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   79 |     while (book != -1 && sz(queried) + 1 != n) {
      |                                          ^
library.cpp:77:6: warning: unused variable 'x' [-Wunused-variable]
   77 |  int x=n-sz(queried);
      |      ^
library.cpp:90:9: warning: unused variable 'cnt' [-Wunused-variable]
   90 |     int cnt = 1;
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...