#include <bits/stdc++.h>
#include "books.h"
using namespace std;
#define pb push_back
#define all(v) v.begin(),v.end()
using i64 = long long;
template<typename T>
using vec = vector<T>;
vec<i64> x;
i64 get(int idx){
if (x[idx] != -1) return x[idx];
return x[idx] = skim(idx);
}
void solve(int N, int K, long long A, int S) {
x.assign(1e5 + 100,-1);
i64 sm = 0;
vec<int> vecans;
for (int i = 1; i <= K; i++){
sm += get(i);
vecans.pb(i);
}
if (sm >= A && sm <= 2*A) {
answer(vecans);
}
int s = 1,e = N+1;
while (e - s > 1){
int m = (s + e) / 2;
if (get(m) > A){
e = m;
}
else {
s = m;
}
}
if(s != N) {
i64 t = sm - get(K) + get(s + 1);
if(t >= A && t <= 2*A) {
vecans.back() = s+1;
answer(vecans);
return;
}
}
if (s < K){
impossible();
}
for (int i = 0; i < K; i++){
vecans[K - i - 1] = s - i;
sm -= get(K - i);
sm += get(s - i);
if (sm >= A && sm <= 2 * A){
answer(vecans);
}
}
impossible();
}
| # | 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... |