Submission #1195584

#TimeUsernameProblemLanguageResultExecution timeMemory
1195584anmattroiA Difficult(y) Choice (BOI21_books)C++17
0 / 100
0 ms420 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-2, 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 (SUM >= A) hi = mid;
        else lo = mid;
    }
    if (hi == N+1 || hi == K-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...