# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
843057 | _Avocado_ | Self Study (JOI22_ho_t2) | C++14 | 299 ms | 5208 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){
return (a + (b-1))/b;
}
int check(int x, auto&a, auto&b){
int sum = 0;
for(int i = 0; i<n; ++i){
int days = up(x, a[i]);
if(sum > n*m - min(m, days)) return 0;
sum += min(m, days);
if(days > m){
int rest = x - (m*a[i]);
int extra_days = up(rest, b[i]);
if(sum > n*m - extra_days) return 0;
sum += extra_days;
}
}
if(sum <= n*m) return 1;
return 0;
}
int bsearch(auto&a, auto&b){
int l = -1;
int r = 2e18;
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){
a[i] = max(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... |