Submission #918690

#TimeUsernameProblemLanguageResultExecution timeMemory
918690Huseyn123A Difficult(y) Choice (BOI21_books)C++17
0 / 100
1 ms600 KiB
#include <bits/stdc++.h>

#include "books.h"

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) {
	vector<int> a; 
	a.resize(N+1,0);
	int l=1,r=N; 
	int h=A/K+(A%K!=0);
	while(l<r){
		int mid=(l+r)/2;
		if(a[mid]==0){
			a[mid]=skim(mid);
		}
		if(a[mid]>=h){
			r=mid;
		}
		else{
			l=mid+1;
		}
	}
	int l1=max(l-K+1,1);
	l=l1+K-1;
	int sum=0;
	set<int> b;
	for(int i=l1;i<=l;i++){
		if(a[i]==0){
			a[i]=skim(i);
		}
		sum+=a[i];
		b.insert(i);
	}
	if(sum>=A && sum<=2*A){
		vector<int> res; 
		for(auto x:b){
			res.push_back(x);
		}
		answer(res);
		return; 
	}
	for(int i=l+1;i<=min(l+K,N);i++){
		sum+=a[i]; 
		sum-=a[i-K]; 
		b.erase(i-K); 
		b.insert(i);
		if(sum>=A && sum<=2*A){
			vector<int> res; 
			for(auto x:b){
				res.push_back(x);
			}
			answer(res);
			return; 
		}
	}
	impossible();
}
#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...