제출 #1331960

#제출 시각아이디문제언어결과실행 시간메모리
1331960boclobanchatA Difficult(y) Choice (BOI21_books)C++20
100 / 100
26 ms412 KiB
#include<bits/stdc++.h>
#include"books.h"
using namespace std;
void solve(int n,int k,long long a,int s)
{
	vector< pair<long long,int> > vi;
	long long sum=0;
	for(int i=1;i<=k;i++) vi.push_back({skim(i),i});
	for(int i=1;i<k;i++) sum+=vi[i].first;
	int l=k+1,r=n,pos=n;
	while(l<=r)
	{
		int mid=(l+r)/2;
		long long res=skim(mid);
		if(sum+res<a) l=mid+1;
		else r=mid-1,pos=mid;
	}
	for(int i=pos;i>pos-k&&i>k;i--) vi.push_back({skim(i),i});
	int sz=vi.size();
	for(int i=0;i<(1<<sz);i++) if(__builtin_popcount(i)==k)
	{
		long long t=0;
		vector<int> res;
		for(int j=0;j<sz;j++) if(i&(1<<j)) res.push_back(vi[j].second),t+=vi[j].first;
		if(t>=a&&t<=a*2)
		{
			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...