Submission #846869

#TimeUsernameProblemLanguageResultExecution timeMemory
846869MinaRagy06A Difficult(y) Choice (BOI21_books)C++17
0 / 100
6 ms2764 KiB
#include <bits/stdc++.h> #ifdef MINA #include "grader.cpp" #endif #include "books.h" #define ll long long using namespace std; ll b[100'005]; ll ask(int i) { if (~b[i]) return b[i]; return b[i] = skim(i + 1); } void solve(int n, int k, ll a, int Q) { memset(b, -1, sizeof b); if (ask(0) > 2 * a) { impossible(); } vector<int> rem; for (int i = 0; i < n; i++) { rem.push_back(i); } ll s = 0; vector<int> ans; while (k--) { int l = 0, r = rem.size() - 1; while (l <= r) { int md = (l + r) >> 1; if (a - s <= ask(rem[md])) { r = md - 1; } else { l = md + 1; } } int i = l; if (i == rem.size()) i--; if (b[rem[i]] > 2 * a - s) { impossible(); if (i == 0) { impossible(); } i--; } s += ask(rem[i]); ans.push_back(rem[i] + 1); vector<int> New; for (auto j : rem) { if (j == ans.back() - 1) { continue; } New.push_back(j); } rem = New; /* bool done = 0; int prv = -1; for (auto i : rem) { if (a - s <= b[i]) { if (b[i] > 2 * a - s) { if (prv == -1) { impossible(); } s += b[prv]; ans.push_back(prv + 1); done = 1; break; } s += b[i]; ans.push_back(i + 1); done = 1; break; } prv = i; } if (!done) { s += b[rem.back()]; ans.push_back(rem.back() + 1); } vector<int> New; for (auto i : rem) { if (i == ans.back()) continue; New.push_back(i); } rem = New; */ } if (!(a <= s && s <= 2 * a)) { impossible(); } answer(ans); }

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:36:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         if (i == rem.size()) i--;
      |             ~~^~~~~~~~~~~~~
#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...