Submission #1357118

#TimeUsernameProblemLanguageResultExecution timeMemory
1357118kismisSelf Study (JOI22_ho_t2)C++20
0 / 100
189 ms5104 KiB

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vt vector 
#define pb push_back
#define pob pop_back
#define endl '\n'
#define fi first
#define se second

bool check(int& mid , vt<int>& a , vt<int>& b , int& n , int& m ){
          int cnt = 0;
          for(int i=0 ; i<n ; i++){
            if(a[i] > b[i]){
                if(m*a[i] >= mid){
                    cnt += (mid+a[i]-1)/a[i];
                }
                else {
                    int temp = mid - m*a[i];
                    cnt += m;
                    cnt += (temp+b[i]-1)/b[i];
                }
            }
            else{
                cnt += (mid+b[i]-1)/b[i];
            }
          }
          if(cnt <= m*n)
          return true;
        return false;
}
signed main(){
    int n , m;
    cin >> n >> m;
    vt<int> a(n);
    vt<int> b(n);
    for(int& i : a)
    cin >> i;
    for(int& i : b)
    cin >> i;
    int l = 0;
    int r = 1000000000000000005ll;
    while(l + 1 < r){
        int mid = (l+r)/2;
        if(check(mid , a , b , n , m))
        l = mid;
    else
    r = mid;
    }
    cout << l << endl;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...