Submission #906263

#TimeUsernameProblemLanguageResultExecution timeMemory
906263Ahmed57A Difficult(y) Choice (BOI21_books)C++17
0 / 100
1 ms1204 KiB
#include "books.h" #include <bits/stdc++.h> using namespace std; void solve(int n,int k,long long a,int s){ int l = 1 , r = n , ans = n; while(l<=r){ int mid = (l+r)/2; if(skim(mid)>a){ ans = mid; r = mid-1; }else l = mid+1; } long long arr[k+1]; long long las[n+1]; long long all = 0; for(int i= 1;i<=k;i++){ arr[i] = skim(i); if(i<k){ all+=arr[i]; } } for(int i = ans;i>=max(1,ans-k);i--){ las[i] = skim(i); } if(all+las[ans]>=a&&all+las[ans]<=2*a&&k-1+(ans>=k)==k){ vector<int> an; for(int i = 1;i<k;i++)an.push_back(i); an.push_back(ans); answer(an);return ; } all = 0; for(int i = 1;i<=k;i++){ all+=arr[i]; long long extra = 0 , cnt = 0; for(int j = max(i+1,ans-k);j<min(n+1,max(i+1,ans-k)+(k-i));j++){ extra+=las[j]; cnt++; } if(all+extra>=a&&all+extra<=2*a&&cnt+i==k){ vector<int> an; for(int j = 1;j<=i;j++)an.push_back(j); for(int j = max(i+1,ans-k);j<max(i+1,ans-k)+(k-i);j++)an.push_back(j); answer(an);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...