#include <bits/stdc++.h>
#include "books.h"
#define ll __int128
using namespace std;
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
#define sz(a) ((int) (a).size())
std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());
void solve(int n, int k, long long a_, int s){
__int128 a=a_;
int l=1;
int r=n;
int ans=-1;
while(l<=r){
int m=(l+r)/2;
if(skim(m)<a){
l=m+1;
ans=m;
}else{
r=m-1;
}
}
vector<int> at;
vector<ll> arr(k+1);
ll smin=0;
L(i,1,k){
at.push_back(i);
arr[i]=skim(i);
smin+=arr[i];
}
if(smin>= a && smin<=2*a){
answer(at);
return;
}
if(ans+1<=r){
ll x=skim(ans+1);
if(x+smin-arr[k]<=2*a){
at.pop_back();
at.push_back(ans+1);
answer(at);
return;
}
}
if(ans<=k){
impossible();
return;
}
if(smin>2*a){
impossible();
return;
}
L(i,0,k-1){
smin-=arr[at.back()];
at.pop_back();
smin+=skim(ans-i);
if(smin>=a){
L(j,0,i){
at.push_back(ans-j);
}
answer(at);return;
}
}
impossible();
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... |