Submission #1204053

#TimeUsernameProblemLanguageResultExecution timeMemory
1204053UnforgettableplA Difficult(y) Choice (BOI21_books)C++20
0 / 100
1 ms664 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; void solve(int N,int K,long long A,int S){ vector<int> memo(N+1); auto optSkim = [&](int x){ if(memo[x]==0)return memo[x]=skim(x); else return memo[x]; }; auto test = [&](int x,bool strict){ int sum = 0; if(optSkim(x)>=A){ for(int i=1;i<K;i++)sum+=optSkim(i); sum+=optSkim(x); } else { for(int i=x-K+1;i<=x;i++)sum+=optSkim(i); } if(strict)return A<=sum and sum<=2ll*A; return A<=sum; }; int ans = K-1; for(int jump=(1<<16);jump;jump/=2){ if(ans+jump>N)continue; if(!test(ans+jump,false))ans+=jump; } ans++; if(ans==N+1 or !test(ans,true)){ impossible(); } else { vector<int> anss; if(optSkim(ans)>=A){ for(int i=1;i<K;i++)anss.emplace_back(i); anss.emplace_back(ans); } else { for(int i=ans-K+1;i<=ans;i++)anss.emplace_back(i); } answer(anss); } }
#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...