Submission #941552

#TimeUsernameProblemLanguageResultExecution timeMemory
941552XiaoyangA Difficult(y) Choice (BOI21_books)C++17
0 / 100
3046 ms444 KiB
#include "books.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; #define fi first #define se second #define pll pair<ll,ll> #define pb push_back #define debug(x) cerr<<#x<<"="<<x<<endl; #define MP make_pair #define rep(i,a,b) for(ll i=a;i<b;i++) #define SZ(x) (ll)x.size() #define ALL(x) x.begin(),x.end() #define endl "\n" const ll inf=1e18; const ll maxn=1e5+5; ll diff[maxn]; ll d(ll x){ if(diff[x])return diff[x]; return diff[x]=skim(x); } void solve(int n, int k, long long A, int s) { ll sum=0; vector<int>ans; rep(i,1,n+1){ sum+=d(i); if(i<=k)ans.pb(i); } if(sum>2*A)impossible(); if(sum>=A)answer(ans); ll lo=1,hi=n; while(lo<hi){ ll mid=(lo+hi)>>1; if(d(mid)<=A)lo=mid; else hi=mid-1; } if(lo<=n and sum-skim(k)+skim(lo)<=2*A){ ans[k-1]=lo; answer(ans); } int idx=1; while(idx and sum<A){ ans[idx-1]=lo; sum-=skim(idx);idx++; sum+=skim(lo);lo--; } if(sum>=A)answer(ans); 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...