Submission #646246

#TimeUsernameProblemLanguageResultExecution timeMemory
646246alextodoranA Difficult(y) Choice (BOI21_books)C++17
0 / 100
204 ms208 KiB
/** ____ ____ ____ ____ ____ ||a |||t |||o |||d |||o || ||__|||__|||__|||__|||__|| |/__\|/__\|/__\|/__\|/__\| **/ #include <bits/stdc++.h> using namespace std; typedef long long ll; ll skim (int i); void answer (vector <int> v); void impossible (); void solve (int N, int K, ll A, int S) { int l = 1, r = N + 1; while (l < r) { int mid = (l + r) / 2; if (skim(mid) * K >= A) { r = mid; } else { l = mid + 1; } } vector <pair <int, ll>> v; for (int i = 1; i <= min(l - 1, K); i++) { v.push_back(make_pair(i, skim(i))); } for (int i = l; i <= min(N, l + K - 1); i++) { v.push_back(make_pair(i, skim(i))); } for (int mask = 0; mask < (1 << (int) v.size()); mask++) { ll sum = 0; vector <int> w; for (int i = 0; i < (int) v.size(); i++) { if ((mask >> i) & 1) { w.push_back(v[i].first); sum += v[i].second; } } if ((int) w.size() == K && A <= sum && sum <= A * 2) { answer(w); 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...