Submission #928568

#TimeUsernameProblemLanguageResultExecution timeMemory
928568jcelinSelf Study (JOI22_ho_t2)C++14
100 / 100
215 ms15276 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> ii; typedef pair<ll,ll> pll; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<ll> vll; typedef vector<pll> vpll; #define PB push_back #define PF push_front #define PPB pop_back #define PPF pop_front #define X first #define Y second #define MP make_pair #define all(x) (x).begin(), (x).end() const int mod = 1e9 + 7; //998244353; const int inf = 1e9 + 7; const ll INF = 1e18 + 7; const int logo = 20; const int MAXN = 1e6 + 7; const int off = 1 << logo; const int trsz = off << 1; const int dx[] = {1, -1, 0, 0}; const int dy[] = {0, 0, -1, 1}; ll a[MAXN], b[MAXN], n, m; bool check(ll x){ ll ret = n * m; for(int i=1; i<=n and ret >= 0; i++){ ll uzmi = (x + a[i] - 1) / a[i]; if(uzmi <= m){ ret -= uzmi; continue; } ret -= m; ll nx = x - m * a[i]; uzmi = (nx + b[i] - 1) / b[i]; ret -= uzmi; } return (ret >= 0); } void solve(){ cin >> n >> m; for(int i=1; i<=n; i++) cin >> a[i]; for(int i=1; i<=n; i++){ cin >> b[i]; a[i] = max(a[i], b[i]); } ll lo = 2, hi = INF, ret = 1; while(lo <= hi){ ll mid = (lo + hi) / 2; if(check(mid)) lo = mid + 1, ret = mid; else hi = mid - 1; } cout << ret << "\n"; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int tt = 1; //cin >> tt; while(tt--) solve(); 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...