제출 #766393

#제출 시각아이디문제언어결과실행 시간메모리
766393HoriaHaivasSelf Study (JOI22_ho_t2)C++14
10 / 100
93 ms11452 KiB
/*
    "TLE is like the wind, always by my side"
    - Yasuo - 2022 -
*/
#include <bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
#define int long long

using namespace std;

int n,m,i,j,r,pas;
int a[300001];
int b[300001];

int courseneed(int val, int a, int b)
{
    int ans;
    ans=0;
    if (a*m<val)
    {
        ans+=m;
        val-=a*m;
        if (val%b==0)
            ans+=val/b;
        else
            ans+=val/b+1;
    }
    else
    {
        if (val%a==0)
            ans+=val/a;
        else
            ans+=val/a+1;
    }
    return ans;
}

bool possible(int minimum)
{
    int sum;
    sum=0;
    for (i=1;i<=n;i++)
    {
         sum+=courseneed(minimum,a[i],b[i]);
    }
    if (sum<=n*m)
        return 1;
    return 0;
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    for (i=1;i<=n;i++)
    {
         cin >> a[i];
    }
    for (i=1;i<=n;i++)
    {
         cin >> b[i];
    }
    for (i=1;i<=n;i++)
    {
         a[i]=max(a[i],b[i]);
    }
    r=0;
    pas=(1<<30);
    while (pas)
    {
         if (possible(r+pas))
             r+=pas;
         pas=pas/2;
    }
    cout << r;
}
#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...