Submission #528132

#TimeUsernameProblemLanguageResultExecution timeMemory
528132dooweySelf Study (JOI22_ho_t2)C++14
0 / 100
379 ms7340 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

#define fi first
#define se second
#define mp make_pair
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

const int N = (int)3e5 + 10;
ll A[N];
ll B[N];
ll C[N];

int main(){
    fastIO;
    int n;
    cin >> n;
    ll m;
    cin >> m;
    for(int i = 1; i <= n; i ++ ){
        cin >> A[i];
    }
    ll maxi = (ll)1e18;
    for(int i = 1; i <= n; i ++ ){
        cin >> B[i];
        A[i] = max(A[i], B[i]);
        maxi = min(maxi, A[i]);
    }
    ll li = 1;
    ll ri = (ll)1e16;
    ll mid;
    ll nd;
    while(li + 1 < ri){
        mid = (li + ri) / 2;
        ll can;
        nd = 0;
        for(int i = 1; i <= n; i ++ ){
            can = (mid + A[i] - 1) / A[i];
            if(can < m){
                nd += m - can;
                C[i] = 0;
            }
            else{
                C[i] = mid - A[i] * 1ll * m;
                if(C[i] < 0) C[i] = 0;
            }
        }
        for(int i = 1; i <= n; i ++ ){
            if(C[i] > 0){
                nd -= (C[i] + B[i] - 1) / B[i];
            }
        }
        if(nd >= 0){
            li = mid;
        }
        else{
            ri = mid;
        }
    }
    cout << li << "\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...