Submission #992181

#TimeUsernameProblemLanguageResultExecution timeMemory
99218112345678A Difficult(y) Choice (BOI21_books)C++17
25 / 100
3095 ms600 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; const int nx=1e5+5; long long n, k, a[nx], t; long long query(int idx) { if (!a[idx]) a[idx]=skim(idx); return a[idx]; } void solve(int N, int K, long long A, int S) { n=N, k=K, t=A; int l=k-1, r=n-1; //for (int i=1; i<=n;i ++) query(i); while (l<=r) { long long md=(l+r)/2, sm=0; for (int j=0; j<k-1; j++) sm+=query(md-j); //cout<<"debug "<<l<<' '<<r<<' '<<sm<<' '<<sm+query(md+1)<<' '<<sm+query(n)<<'\n'; if (sm+query(md+1)>2*t) r=md-1; else if (sm+query(n)<t) l=md+1; else { //cout<<"answer "<<md<<' '<<sm<<'\n'; long long l1=md+1, r1=n; while (l1<=r1) { long long md1=(l1+r1)/2; if (sm+query(md1)<t) l1=md1+1; else if (sm+query(md1)>2*t) r1=md1-1; else { vector<int> res; for (int j=0; j<k-1; j++) res.push_back(md-j); res.push_back(md1); answer(res); } } } } impossible(); } /* 5 3 10 179 1 2 9 10 100 */
#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...