Submission #1297753

#TimeUsernameProblemLanguageResultExecution timeMemory
1297753Jawad_Akbar_JJA Difficult(y) Choice (BOI21_books)C++20
100 / 100
2 ms416 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){
		impossible();
		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){
		impossible();
		return;
	}
	Ans.insert(Ans.end(), begin(ans), end(ans));
	answer(Ans);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...