Submission #1195585

#TimeUsernameProblemLanguageResultExecution timeMemory
1195585anmattroiA Difficult(y) Choice (BOI21_books)C++17
10 / 100
0 ms412 KiB
#include "books.h"
#include <bits/stdc++.h>

using namespace std;


map<int, long long> cached;

long long get(int x) {
    return cached.count(x) ? cached[x] : cached[x] = skim(x);
}

void solve(int N, int K, long long A, int S) {
    int lo = K-1, hi = N+1;
    while (hi - lo > 1) {
        int mid = (lo + hi) >> 1;
        int64_t SUM = 0;
        for (int i = mid-K+1; i <= mid; i++) SUM += get(i);
        if (mid == K && SUM > 2 * A) {
            impossible();
            return;
        }
        if (SUM >= A) hi = mid;
        else lo = mid;
    }
    if (hi == N+1) {
        impossible();
        return;
    }
    vector<int> ans;
    for (int i = hi-K+1; i <= hi; i++) ans.emplace_back(i);
    answer(ans);
}

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