Submission #1212045

#TimeUsernameProblemLanguageResultExecution timeMemory
1212045minhpkSelf Study (JOI22_ho_t2)C++20
100 / 100
168 ms7492 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int a,b; int x[1000005]; int base[1000005]; struct node{ int z,x,base; }; node z[1000005]; bool cmp(node a,node b){ return a.base>b.base; } bool check(int mid){ int remain=0; for (int i=1;i<=a;i++){ if (z[i].base>=mid){ int sl=mid/max(z[i].x,z[i].z) +(mid%max(z[i].z,z[i].x)!=0); remain+= b-sl; }else{ int req=(mid-z[i].base)/z[i].x + ((mid-z[i].base)%z[i].x!=0); if (req>remain){ return false; } remain-=req; } } return true; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> a >> b; for (int i=1;i<=a;i++){ cin >> z[i].z; } for (int i=1;i<=a;i++){ cin >> z[i].x; } for (int i=1;i<=a;i++){ z[i].base=max(z[i].x,z[i].z)*b; } sort(z+1,z+1+a,cmp); int l=1; int r=1e18; int pos=0; while (l<=r){ int mid=(l+r)/2; if (check(mid)){ pos=mid; l=mid+1; }else{ r=mid-1; } } cout << pos << "\n"; return 0; }
#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...