제출 #847561

#제출 시각아이디문제언어결과실행 시간메모리
847561MinaRagy06A Difficult(y) Choice (BOI21_books)C++17
60 / 100
2 ms1624 KiB
#include <bits/stdc++.h> #ifdef MINA #include "grader.cpp" #else #ifdef DEBUG #include "grader2.cpp" #endif #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); ll s1 = 0; for (int i = 0; i < k - 1; i++) { s1 += ask(i); } int l = 0, r = n - 1; while (l <= r) { int md = ((l + r) >> 1); ll s = ask(md); if (s >= a) { if (s1 + s <= 2 * a) { vector<int> ans; for (int j = 0; j < k - 1; j++) { ans.push_back(j + 1); } ans.push_back(md + 1); answer(ans); } else { r = md - 1; continue; } } else { l = md + 1; } } l = 0, r = n - k; while (l <= r) { int md = ((l + r)) >> 1; ll s = 0; for (int i = md; i < md + k; i++) { s += ask(i); } if (s < a) { l = md + 1; } else if (s > 2 * a) { r = md - 1; } else { vector<int> ans; for (int j = md; j < md + k; j++) { ans.push_back(j + 1); } answer(ans); } } impossible(); }
#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...