#include <bits/stdc++.h>
#include "books.h"
typedef long long ll;
using namespace std;
const int MAX = 100007;
ll X[MAX];
ll Skim(int p) {
if (X[p]) return X[p];
return X[p] = skim(p);
}
void solve(int N, int K, ll A, int S) {
memset(X, 0, 8 * (N + 1));
ll base = 0;
for (int i = 1; i < K; ++i) base += Skim(i);
int L = K, R = N + 1;
while (L + 1 < R) {
int mid = (L + R) >> 1;
(A * 2 < base + Skim(mid) ? R : L) = mid;
}
vector<int> ans(K);
iota(ans.begin(), ans.end(), 1);
if (A * 2 < base + Skim(L)) impossible();
if (A <= base + skim(L)) {
ans[K - 1] = L;
answer(ans);
return;
}
base += Skim(K);
for (int i = K; i > 0; --i) {
int r = L - (K - i);
base += Skim(r) - Skim(i);
ans[i - 1] = r;
if (A <= base && base <= A * 2) {
answer(ans);
return;
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |