Submission #1192607

#TimeUsernameProblemLanguageResultExecution timeMemory
1192607lambd47A Difficult(y) Choice (BOI21_books)C++20
0 / 100
0 ms412 KiB
#include <bits/stdc++.h> #include "books.h" #define ll long long using namespace std; #define L(i, j, k) for(int i = (j); i <= (k); ++i) #define R(i, j, k) for(int i = (j); i >= (k); --i) #define sz(a) ((int) (a).size()) std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count()); void solve(int n, int k, ll a, int s){ vector<int> arr(k+1); ll smin=(ll)s; smin=0; for(int i=1;i<=k;i++){ arr[i]=skim(i); smin+=arr[i]; } if(smin>2*a){ impossible(); return; } if(smin>=a){ vector<int> x(k); iota(x.begin(),x.end(),1); answer(x);return; } smin-=arr[k]; int l=1; int r=n; int ans=-1; while(l<=r){ int m=(l+r)/2; if(a>skim(m)){ l=m+1; ans=m; } else r=m-1; } if(ans!=r){ ll x=skim(ans+1); if(x+smin<= 2*a && x+smin>=a){ vector<int> rr(k-1); iota(rr.begin(),rr.end(),1); rr.push_back(ans+1); answer(rr); return; } } if(ans<=k){ impossible(); return; } ll somat=skim(ans)+smin; vector<int> resp; resp.push_back(ans); if(somat >= a){ for(int i=1;i<k;i++){ resp.push_back(i); } answer(resp); } else{ for(int i=1;i<k;i++){ ll val=skim(ans-i); resp.push_back(ans-i); somat+=val; somat-=arr[k-i]; if(somat >= a && somat<=2*a){ for(int j=1;j<k-i;j++){ resp.push_back(j); } answer(resp); return; } } } impossible(); return; }
#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...