Submission #1301570

#TimeUsernameProblemLanguageResultExecution timeMemory
1301570efegA Difficult(y) Choice (BOI21_books)C++20
100 / 100
2 ms1180 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; #define pb push_back #define all(v) v.begin(),v.end() using i64 = long long; template<typename T> using vec = vector<T>; vec<i64> x; i64 get(int idx){ if (x[idx] != -1) return x[idx]; return x[idx] = skim(idx); } void solve(int N, int K, long long A, int S) { x.assign(1e5 + 100,-1); i64 sm = 0; vec<int> vecans; for (int i = 1; i <= K; i++){ sm += get(i); vecans.pb(i); } if (sm >= A && sm <= 2*A) { answer(vecans); } int s = 1,e = N+1; while (e - s > 1){ int m = (s + e) / 2; if (get(m) > A){ e = m; } else { s = m; } } if(s != N) { i64 t = sm - get(K) + get(s + 1); if(t >= A && t <= 2*A) { vecans.back() = s+1; answer(vecans); return; } } if (s < K){ impossible(); } for (int i = 0; i < K; i++){ vecans[K - i - 1] = s - i; sm -= get(K - i); sm += get(s - i); if (sm >= A && sm <= 2 * A){ answer(vecans); } } 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...