Submission #681566

#TimeUsernameProblemLanguageResultExecution timeMemory
681566YENGOYANA Difficult(y) Choice (BOI21_books)C++17
20 / 100
1 ms984 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; using ll = long long; // // --- Sample implementation for the task books --- // // To compile this program with the sample grader, place: // books.h books_sample.cpp sample_grader.cpp // in a single folder and run: // g++ books_sample.cpp sample_grader.cpp // in this folder. // void solve(int n, int k, long long a, int s) { vector<ll> vec(n); ll sm = 0; for (int i = 0; i < k - 1; ++i) { vec[i] = skim(i + 1); sm += vec[i]; } int l = k - 2, r = n - 1; bool f = 0; while (l + 1 < r) { int m = (l + r) / 2; ll b = vec[m]; if (!b) b = skim(m + 1); vec[m] = b; if (b > a) r = m, f = 1; else l = m; } if ((sm + vec[r] < a || sm + vec[r] > 2 * a)) { vector<int> ids; for (int i = 0; i < k; ++i) { if (!vec[i]) vec[i] = skim(i + 1); ids.push_back(i); } for (int i = max(r - k + 1, k); i <= r; ++i) { if (!vec[i]) vec[i] = skim(i + 1); ids.push_back(i); } for (int i = 0; i + k - 1 < ids.size(); ++i) { sm = 0; for (int j = 0; j < k; ++j) { sm += vec[ids[i + j]]; } if (sm >= a && sm <= 2 * a) { vector<int> ans; for (int j = 0; j < k; ++j) ans.push_back(ids[i + j] + 1); answer(ans); return; } } sm = 0; for (int i = 0; i < k - 1; ++i) sm += vec[i]; l = k - 2, r = n - 1; while (l + 1 < r) { int m = (l + r) / 2; long long b = vec[m]; if (!b) b = skim(m + 1); vec[m] = b; if (sm + b >= a) r = m; else l = m; } if(sm + vec[r] < a || sm + vec[r] > 2 * a) impossible(); else { vector<int> ans; for (int i = 1; i <= k - 1; ++i) ans.push_back(i); ans.push_back(r + 1); answer(ans); } return; } vector<int> ans; for (int i = 1; i < k; ++i) ans.push_back(i); ans.push_back(r + 1); answer(ans); }

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:44:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |   for (int i = 0; i + k - 1 < ids.size(); ++i) {
      |                   ~~~~~~~~~~^~~~~~~~~~~~
books.cpp:25:7: warning: variable 'f' set but not used [-Wunused-but-set-variable]
   25 |  bool f = 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...