Submission #652490

#TimeUsernameProblemLanguageResultExecution timeMemory
652490flappybirdA Difficult(y) Choice (BOI21_books)C++17
100 / 100
2 ms336 KiB
#include <bits/stdc++.h> #include "books.h" typedef long long ll; using namespace std; #define MAX 101010 ll arr[MAX]; ll query(int x) { if (arr[x]) return arr[x]; return arr[x] = skim(x); } void solve(int N, int K, long long A, int S) { int i; ll sum = 0; for (i = 1; i < K; i++) sum += query(i); int l, r; l = K; r = N + 1; while (r - l > 1) { int mid = (l + r) / 2; if (query(mid) + sum > 2ll * A) r = mid; else l = mid; } if (sum + query(l) > 2ll * A) { impossible(); return; } if (sum + query(l) >= A) { vector<int> v; int i; for (i = 1; i < K; i++) v.push_back(i); v.push_back(l); answer(v); } for (i = K; i >= 0; i--) { int j; ll sum = 0; for (j = 1; j <= i; j++) sum += query(j); for (j = 1; j <= K - i; j++) sum += query(l - j + 1); if (A <= sum && sum <= 2 * A) { vector<int> v; for (j = 1; j <= i; j++) v.push_back(j); for (j = 1; j <= K - i; j++) v.push_back(l - j + 1); answer(v); 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...