Submission #846763

#TimeUsernameProblemLanguageResultExecution timeMemory
846763Ahmed57A Difficult(y) Choice (BOI21_books)C++17
0 / 100
1 ms1112 KiB
#include <bits/stdc++.h> using namespace std; #include "books.h" long long val[100001]; long long qu(int i){ if(val[i]!=-1)return val[i]; return val[i] = skim(i); } void solve(int N,int K,long long A,int S){ memset(val,-1,sizeof val); int l = 1 , r = N-K , ans = -1 , sum = 0; while(l<=r){ int mid = (l+r)/2; long long val = 0; for(int i = mid;i<mid+K-1;i++){ val+=qu(i); } if(val<A){ l = mid+1; sum = val; ans = mid; }else r = mid-1; } if(ans==-1)impossible(); l = ans+K-1 , r = N; while(l<=r){ int mid = (l+r)/2; if(sum+qu(mid)<A){ l= mid+1; }else if(sum+qu(mid)>2*A){ r = mid-1; }else{ vector<int> v; for(int i = ans;i<ans+K-1;i++)v.push_back(i); v.push_back(mid); 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...