#include <bits/stdc++.h>
#include "books.h"
typedef long long ll;
using namespace std;
const int MAXN = 10e5 + 5;
int n, k, a;
int books[MAXN];
#define get_max(b) b * k + (k - 1) * a
#define get_min(b) b * k + ((k - 1) * k / 2)
ll get(int i){
if (books[i] == -1)
books[i] = skim(i);
return books[i];
}
void solve(int N, int K, long long A, int S) {
memset(books, -1, sizeof books);
n = N, k = K, a = A;
int l = 1, h = n;
ll curr, sum;
while (l < h){
int m = (l + h) / 2;
if (m + k > n)
m = n - k + 1;
curr = get(m);
if (get_max(curr) < a)
l = m + 1;
else if (get_min(curr) > 2 * a)
h = m - 1;
else{
sum = 0;
for (int i = m; i < m + k; i++) sum += get(i);
if (sum >= a and sum <= 2 * a)
{
vector<int> res;
for (int i = m; i < m + k; i++) res.push_back(i);
answer(res);
return;
}
}
}
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... |