# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
842802 | _Avocado_ | Self Study (JOI22_ho_t2) | C++14 | 432 ms | 5140 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define int int64_t
using namespace std;
int n, m;
int up(int a, int b){
int ret = a/b;
if(a%b) ++ret;
return ret;
}
int check(int x, auto&a, auto&b){
int extra = 0;
for(int i = 0; i<n; ++i){
int days = up(x, a[i]);
if(days <= m){
extra -= (m-days);
assert(days == 1);
}
else{
int rest = x - (m*a[i]);
assert(rest > 0);
int extra_days = up(rest, b[i]);
assert(extra_days > 0);
extra += extra_days;
}
}
if(extra <= 0) return 1;
return 0;
}
int bsearch(auto&a, auto&b){
int l = -1;
int r = 1e18+18;
while(r-l > 1){
int x = (r+l)/2;
if(check(x, a, b)) l = x;
else r = x;
}
return l;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
//freopen("input.in", "r", stdin);
//freopen("output.out", "w", stdout);
cin>>n>>m;
vector<int>a(n);
for(auto&u: a) cin>>u;
vector<int>b(n);
for(auto&u: b) cin>>u;
for(int i = 0; i<n; ++i){
if(a[i] < b[i]) a[i] = b[i];
}
cout<<bsearch(a, b);
cout<<'\n';
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |