Submission #1306596

#TimeUsernameProblemLanguageResultExecution timeMemory
1306596hxluk.kaSelf Study (JOI22_ho_t2)C++20
0 / 100
1097 ms5092 KiB
#include <iostream>
using namespace std;
#define ll long long
const ll nx=3e5, inf=4e18;
ll n, m, a[nx], b[nx], l, r, mid, mx_val;
int canAchive(ll x) {
    ll total=0;
    for (int i=1; i<=n; i++) {
        ll mn=inf;

        for (int j=0; j<=m; j++) {
            ll act=j*a[i];
            ll need=max(0LL, x-act);
            ll add=(need+b[i]-1)/b[i];
            mn=min(mn, j+add);
        }
        total+=mn;
    }
    return total<=m*n;
}
int main() {
    cin.tie(0)->sync_with_stdio(0);

    cin>>n>>m;
    for (int i=1; i<=n; i++) cin>>a[i], mx_val=max(mx_val, a[i]);
    for (int i=1; i<=n; i++) cin>>b[i], mx_val=max(mx_val, b[i]);

    r=mx_val*m;
    while (l<r) {
        mid=(l+r+1)/2;
        if (canAchive(mid)) l=mid;
        else r=mid-1;
    }

    cout << l;
}
#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...