제출 #703654

#제출 시각아이디문제언어결과실행 시간메모리
703654niterSelf Study (JOI22_ho_t2)C++14
100 / 100
403 ms7452 KiB
#include <bits/stdc++.h> #define loop(i,a,b) for(int i=a;i<b;i++) #define pii pair<long long,int> #define ff first #define ss second #define mp make_pair #define pb push_back #define STL(i, x) for(auto &i:x) cout << i << " "; cout << "\n"; using namespace std; long long a[300050], b[300050], c[300050]; /*ostream& operator<<(ostream &os, pii XXX){ cout << "[" << XXX.ff << ", " << XXX.ss << "]"; }*/ void db(){ cout << "\n"; } template<class T, class ...U> void db(T XXX, U ...YYY){ cout << XXX; db(YYY...); } __int128 min(__int128 XXX, __int128 YYY){ return (XXX > YYY) ? (YYY) : (XXX); } int main(){ long long n, m, all; cin >> n >> m; all = n * m; loop(i,0,n) cin >> a[i]; loop(i,0,n) cin >> b[i]; loop(i,0,n) c[i] = max(a[i], b[i]); long long Tr = 1, Fal = 1LL<<60, mid, cost; __int128 classes; while(Fal - Tr > 1){ mid = (Tr + Fal) >> 1; classes = 0; loop(i,0,n){ cost = mid; if(b[i] >= a[i]){ classes += ((cost-1) / b[i] + 1); } else{ classes += min(((cost-1) / a[i] + 1), m); cost -= min(((cost-1) / a[i] + 1), m) * a[i]; if(cost > 0) classes += ((cost-1) / b[i] + 1); } } if(classes > all){ Fal = mid; } else{ Tr = mid; } } cout << Tr << "\n"; return 0; } /* 3 3 19 4 5 2 6 2 */
#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...