# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1127111 | ZeroCool | A Difficult(y) Choice (BOI21_books) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
//#include "books.h"
using namespace std;
#define all(a) begin(a),end(a)
void solve(int n, int K, long long X, int S) {
vector<int> A(n);
vector<int> ans(K,0);
iota(all(ans), 1);
int sum = 0;
for(int i = 1; i <= K; i++){
A[i] = skim(i);
sum += A[i];
}
if(sum > 2*X) impossible();
int l = K, r = n;
while(l < r){
int mid = (l + r + 1) / 2;
if(sum - A[K] + skim(mid) <= 2 * X) l = mid;
else r = mid - 1 ;
}
deque<int> dq(K, 0);
iota(all(dq), 1);
for(int i = 0; i <= K; i++){
sum -= A[K - i];
sum+=skim(l - i);
dq.pop_back();
dq.push_front(l - i);
if(sum >= X) answer(vector<int>(all(dq)));
}
impossible();
}