제출 #1011213

#제출 시각아이디문제언어결과실행 시간메모리
1011213overwatch9A Difficult(y) Choice (BOI21_books)C++17
20 / 100
159 ms1112 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, ll A, int S) { // TODO implement this function vector <ll> nums(N+1); for (int i = 1; i <= N; i++) nums[i] = skim(i); int l = -1; int extra = -1; vector <ll> pfx(N+1); for (int i = 1; i <= N; i++) pfx[i] = pfx[i-1] + nums[i]; for (int i = 1; i <= N; i++) { ll sum = 0; if (i + K - 1 <= N) { sum = pfx[i + K - 1] - pfx[i-1]; if (sum >= A && sum <= 2 * A) { l = i; break; } } if (i + K - 2 <= N) { sum = pfx[i + K - 2] - pfx[i-1]; auto it = lower_bound(nums.begin() + i + K - 1, nums.end(), A - sum); if (it != nums.end()) { if (*it + sum >= A && *it + sum <= 2 * A) { l = i; extra = it - nums.begin(); break; } } } } if (l == -1) { impossible(); return; } // cout << l << '\n'; // cout << extra << '\n'; vector <int> ans(K); if (extra != -1) { for (int i = l; i < l + K - 1; i++) ans[i - l] = i; ans[K-1] = extra; answer(ans); } else { for (int i = l; i < l + K; i++) ans[i - l] = i; answer(ans); } } // int main() { // int n, k, a, s; // cin >> n >> k >> a >> s; // vector <int> nums(n+1); // for (int i = 1; i <= n; i++) // cin >> nums[i]; // auto res = solve(n, k, a, s); // }
#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...