제출 #1306599

#제출 시각아이디문제언어결과실행 시간메모리
1306599hxluk.kaSelf Study (JOI22_ho_t2)C++20
0 / 100
1096 ms5084 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;

        ll est=0;
        if (a[i]>0&&x>0) est = x / a[i];

        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;

        if (total>m*n) return 0;
    }
    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...