제출 #1352080

#제출 시각아이디문제언어결과실행 시간메모리
1352080hyyhSelf Study (JOI22_ho_t2)C++20
0 / 100
161 ms8720 KiB
#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
#include <unordered_map>
#include <cstdlib>

#define int long long

using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
#define f first
#define s second
#define endl '\n'
#define all(x) begin(x),end(x)

vector<pii> vc;

int n,m;

bool check(int x){
    int left = 0;
    for(auto [a,b]:vc){
        if(x <= a*m) left += m-(x-1)/a-1;
        else left -= (x-a*m+b-1)/b;
    }
    return left>=0;
}

signed main(){
    cin >> n;
    cin >> m;
    for(int i{};i < n;i++){
        int g;
        cin >> g;
        vc.emplace_back(g,0);
    }
    for(int i{};i < n;i++) cin >> vc[i].s,vc[i].f = max(vc[i].f,vc[i].s);
    int l = 1;
    int r = 1e18+10;
    int ans = r+1;
    while(l <= r){
        int md = l+(r-l)/2;
        if(!check(md)) ans = min(ans,md),r = md-1;
        else l = md+1;
    }
    cout << ans-1;
}
#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...