#include <bits/stdc++.h>
#include "books.h"
#define int long long
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
using namespace std;
map<int,int> mp;
int ski(int x){
if(mp.find(x)!=mp.end()) return mp[x];
return mp[x]=skim((int)(x+1));
}
void solve(signed N, signed K, long long A, signed S) {
vector<pair<int,int>> a;
set<int> st;
for (int i = 0; i < K; i++) {
a.push_back({ski(i),i});
st.insert(i);
}
int l=K, r=N-1;
while(l<r){
int mid=(l+r)/2;
int v=ski(mid);
if(v>=A) {
r=mid;
}else{
l=mid+1;
}
}
int mxI=r;
for (int i = mxI; i >= max(0LL, (mxI-K)); i--)
{
if(st.find(i)!=st.end()) continue;
a.push_back({ski(i),i});
}
sort(all(a));
vector<int> mask(K, 1);
mask.resize(sz(a), 0);
vector<signed> ans;
do {
int sum=0;
for (int i = 0; i < sz(a); i++) {
if (mask[i]) sum+=a[i].first;
}
if(sum>=A&&sum<=2*A){
for (int i = 0; i < sz(a); i++) {
if (mask[i]) ans.push_back(a[i].second+1);
}
answer(ans);
return;
}
} while (prev_permutation(mask.begin(), mask.end()));
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... |