Submission #1302384

#TimeUsernameProblemLanguageResultExecution timeMemory
1302384yuichiro17A Difficult(y) Choice (BOI21_books)C++20
0 / 100
2 ms1108 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; using ll = long long; vector<ll>memo; int n,k,s; ll a; ll ask(int i){ if(memo[i]==-1)return memo[i]=skim(i+1); else return memo[i]; } int bs(ll x,int l,int r){ if(l==r)return l; int m=(l+r+1)/2; ll y=ask(m); if(x==y)return m; else if(x<y)return bs(x,l,m-1); else return bs(x,m,r); } void solve(int N, int K, long long A, int S) { n=N,k=K,a=A,s=S; memo=vector<ll>(n,-1); int x=bs(a/k,0,n-1); vector<pair<ll,int>>v; for(int i=max(0,x-10);i<min(n,x+11);i++){ v.push_back({ask(i),i+1}); } for(int i=0;i+k<v.size();i++){ ll sum=0; vector<int>ans; for(int j=i;j<i+k;j++){ sum+=v[j].first; ans.push_back(v[j].second); } if(sum>=a&&sum<=2*a){ answer(ans); return; } } impossible(); return; }
#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...