Submission #1272592

#TimeUsernameProblemLanguageResultExecution timeMemory
1272592nerrrminA Difficult(y) Choice (BOI21_books)C++20
10 / 100
1086 ms436 KiB
#include <bits/stdc++.h> #include "books.h" #define pb push_back using namespace std; const int maxn = 2e5 + 10; // // --- Sample implementation for the task books --- // // To compile this program with the sample grader, place: // books.h books_sample.cpp sample_grader.cpp // in a single folder and run: // g++ books_sample.cpp sample_grader.cpp // in this folder. // long long n, k, s; long long a; long long x[maxn]; long long do_skim(int pos) { if(!x[pos])x[pos] = skim(pos); return x[pos]; } long long check(int from, int to) { long long sum = 0; for (int i = to; i >= from; -- i) { sum += do_skim(i); if(sum >= 2*a)return sum; } return sum; } void solve(int N, int K, long long A, int S) { n = N; k = K; a = A; int l = 1, r = n-k+1, mid, ans = -1; /// nai golqmoto posledovateno k-1 sys suma < a while(l <= r) { mid = (l + r)/2; long long feedback = check(mid, mid+k-1); if(feedback < a) { l = mid + 1; ans = mid; } else if(feedback >= a) { if(feedback >= a && feedback <= 2*a) { vector < int > v; for (int i = mid; i <= mid+k-1; ++ i) v.pb(i); answer(v); return; } r = mid - 1; } } if(ans == -1) { vector < int > v; long long sum = 0; for (int i = 1; i <= k; ++ i) { sum += do_skim(i); v.pb(i); } if(sum >= a && sum <= 2*a)answer(v); else impossible(); return; } vector < int > v; long long sum = 0; for (int i = 1; i <= k-1; ++ i) { sum += do_skim(i); v.pb(i); } int lt = k, rt = n, res = -1; while(lt <= rt) { mid = (lt + rt)/2; if(do_skim(mid) >= a ) { if(do_skim(mid) + sum >= a && do_skim(mid) + sum <= 2*a)res = mid; r = mid - 1; } else l = mid + 1; } if(res == -1) impossible(); else { v.pb(res); answer(v); } }
#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...