Submission #1032355

#TimeUsernameProblemLanguageResultExecution timeMemory
1032355Marco_EscandonA Difficult(y) Choice (BOI21_books)C++17
60 / 100
2 ms1372 KiB

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const string ny[2] = {"No", "Yes"};
#include"books.h"
void solve(int n, int k, long long A, int S) {
	ll cad[n+4]={ };
	ll v[k+2]={ },ac=0;
	v[k+1]=n+1;
	for(int i=1; i<=k; i++)
	{
		cad[i]=skim(i);
		v[i]=i;
		ac+=cad[i];
	}
	for(int i=k; i>0; i--)
	{
		if(ac>=A) break;
		ll a=v[i]; ll b=v[i+1];
		ac-=cad[v[i]];
		while(abs(a-b)!=1)
		{
			ll m=(a+b)/2;
			if(cad[m]==0) cad[m]=skim(m);
			if(cad[m]+ac<=2*A)
				a=m;
			else b=m;
		}
		v[i]=b-1;
		ac+=cad[v[i]];
		//while(v[i]+1<v[i+1]&&ac<a&&ac-cad[v[i]]+cad[v[i]+1]<=2*a)
		//{
		//	ac-=cad[v[i]];
		//	v[i]++;
		//	ac+=cad[v[i]];
		//}
	}
	if(ac<A||ac>2*A)
	{
		impossible();
		return;
	}
		
	vector<int> ans;
	for(int i=1; i<=k; i++)
		ans.push_back(v[i]);
	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...