Submission #1150700

#TimeUsernameProblemLanguageResultExecution timeMemory
1150700LudisseyA Difficult(y) Choice (BOI21_books)C++20
0 / 100
0 ms408 KiB
#include <bits/stdc++.h> #include "books.h" #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() using namespace std; map<int,int> mp; int ski(int x){ if(mp.find(x)!=mp.end()) return mp[x]; return mp[x]=skim(x+1); } void solve(int N, int K, long long A, int S) { vector<pair<int,int>> a; set<int> st; for (int i = 0; i < K; i++) { a.push_back({ski(i),i}); st.insert(i); } int l=K, r=N-1; while(l<r){ int mid=(l+r)/2; int v=ski(mid); if(v>=A) { r=mid; }else{ l=mid+1; } } int mxI=r; for (int i = mxI; i >= max(0, (mxI-K)+1); i--) { if(st.find(i)!=st.end()) continue; a.push_back({ski(i),i}); } sort(all(a)); vector<int> mask(K, 1); mask.resize(sz(a), 0); vector<int> ans; do { int sum=0; for (int i = 0; i < sz(a); i++) { if (mask[i]) sum+=a[i].first; } if(sum>=A&&sum<=2*A){ for (int i = 0; i < sz(a); i++) { if (mask[i]) ans.push_back(a[i].second+1); } answer(ans); return; } } while (prev_permutation(mask.begin(), mask.end())); 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...