이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
__int128 cost, 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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |