# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1000966 | MarwenElarbi | A Difficult(y) Choice (BOI21_books) | C++17 | 1 ms | 344 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define ll long long
#define pb push_back
#define ii pair<int,int>
const int nax=2e5+5;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
long long skim(int);
void answer(std::vector<int>);
void impossible();
void solve(int N, int K, long long A, int S){
int cnt=40;
ll sum=0;
vector<int> tab;
vector<ll> a;
vector<pair<ll,int>> v;
for (int i = 1; i <= K; ++i)
{
cnt--;
tab.pb(i);
a.pb(skim(i));
v.pb({a.back(),i});
sum+=a.back();
}
int mn=a[0];
int l=K;
int r=N+1;
ll q;
int mid;
while(r-l>1){
cnt--;
mid=(r+l)/2;
q=skim(mid);
if(q>=A-sum+mn) r=mid;
else l=mid;
}
if(r==N+1||q>2*A-sum+a.back()){
for (int i = l; cnt-- && i > K && v.size() < 20; --i)
{
v.pb({skim(i),i});
}
sort(v.begin(),v.end());
for (int i = 0; i < (1<<v.size()); ++i)
{
if(__builtin_popcount(i)!=K) continue;
ll nab=0;
for (int j = 0; j < v.size(); ++j)
{
if(i&(1<<j)) nab+=v[j].fi;
}
if(A<=nab&&nab<=2*A){
tab.clear();
for (int j = 0; j < v.size(); ++j)
{
if(i&(1<<j)) tab.pb(v[j].se);
}
sort(tab.begin(),tab.end());
answer(tab);
return;
}
}
impossible();
}else{
if(q>2*A-sum+mn){
tab.back()=mid;
}else tab[0]=mid;
sort(tab.begin(),tab.end());
answer(tab);
return;
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |