| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1297752 | Jawad_Akbar_JJ | A Difficult(y) Choice (BOI21_books) | C++20 | 0 ms | 0 KiB |
#include <iostream>
#include <vector>
#include "books.h"
using namespace std;
long long a[1<<17];
void solve(int n, int k, long long A, int s){
long long Sum = 0, lst = k;
vector<int> Ans, ans;
for (int i=1;i<=k;i++){
a[i] = skim(i);
Sum += a[i];
Ans.push_back(i);
}
int l = k-1, r = n + 1;
while (l + 1 < r){
int mid = (l + r) / 2;
if (Sum - a[k] + skim(mid) > 2 * A)
r = mid;
else
l = mid;
}
if (r == k){
imppossible();
return;
}
for (int i=l;i>l-k;i--){
a[i] = skim(i);
if (Sum - a[lst] + a[i] <= 2 * A)
Sum += a[i] - a[lst--], Ans.pop_back(), ans.push_back(i);
else
break;
}
if (Sum < A){
imppossible();
return;
}
Ans.insert(Ans.end(), begin(ans), end(ans));
answer(Ans);
}
