제출 #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...