#include <bits/stdc++.h>
#include "books.h"
#define vi vector<int>
#define pb push_back
#define f0r(i,n) for(int i = 0; i<n; i++)
using namespace std;
//
// --- Sample implementation for the task books ---
//
// To compile this program with the sample grader, place:
// books.h books_sample.cpp sample_grader.cpp
// in a single folder and run:
// g++ books_sample.cpp sample_grader.cpp
// in this folder.
//
void solve(int N, int K, long long A, int S) {
// TODO implement this function
vi v(N, -1);
int lo = 0;
int hi = N - K;
while(lo < hi){
int mid = lo + (hi - lo)/2;
int cur = 0;
for(int i = mid; i<mid + K; i++){
if(v[i] == -1){
v[i] = skim(i+1);
}
cur += v[i];
}
if(cur >= A){
hi = mid;
}
else lo = mid + 1;
}
if(lo == 0){
int cur = 0;
f0r(i, K){
cur += v[i];
}
if(cur > 2 * A)impossible();
else{
vi ans;
f0r(i, K)ans.pb(i + 1);
answer(ans);
}
}
else{
if(v[lo-1] == -1){
v[lo-1] = skim(lo);
}
bool ok = 0;
int sum = 0;
for(int i = lo-1; i<=lo + K - 1; i++){
sum += v[i];
}
int smol = 1e9;
for(int i = lo-1; i<=lo + K - 1; i++){
if(sum - v[i] >= A && sum - v[i] <= 2 * A){
vi ans;
for(int j = lo-1; j<=lo + K - 1; j++){
if(j != i)ans.pb(j+1);
}
ok = 1;
answer(ans);
break;
}
else if(sum - v[i] < A){
smol = min(smol, i);
}
}
if(!ok){
if(lo + K >= N)impossible();
else{
if(v[lo + K] == -1){
v[lo + K] = skim(lo + K + 1);
}
int thing = sum - v[smol] - v[lo + K - 1] + v[lo + K];
if(thing >= A && thing <= 2 * A){
vi ans;
for(int i = i-1; i<=lo+K; i++){
if(i != lo + K - 1 && i != smol){
ans.pb(i+1);
}
}
answer(ans);
}
else 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... |