제출 #646244

#제출 시각아이디문제언어결과실행 시간메모리
646244alextodoranA Difficult(y) Choice (BOI21_books)C++17
45 / 100
49 ms336 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 = max(1, l - K); 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...