Submission #1197215

#TimeUsernameProblemLanguageResultExecution timeMemory
1197215vtnooSelf Study (JOI22_ho_t2)C++20
35 / 100
95 ms5140 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>

#define pb push_back
#define snd second
#define fst first
#define forn(i,n) for(int i=0;i<n;++i)
#define forsn(i,s,n) for(int i=s; i<n; ++i)
#define all(x) x.begin(), x.end()
#define imp(x) for(auto __:x)cout<<__<<" "; cout<<endl;
#define sz(c) int((c).size())

using namespace std;

typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<ll> vi;

int main(){	
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	int n,m;cin>>n>>m;
	vi A(n), B(n);
	//ten en cuenta que solo podemos obtener A[i] si j==i;
	forn(i,n)cin>>A[i];
	forn(i,n){
		cin>>B[i]; 
		A[i]=max(A[i], B[i]);
	}
	auto can=[&](ll tar)->bool{
		__int128 clases=0;
		forn(i,n){
			clases+=(tar+A[i]-1)/A[i];
			if(clases>(__int128)n*m)return false;
		}
		return true;
	};
	ll l=0, r=1e18;
	while(r-l>1){
		ll m=l+(r-l)/2;
		if(can(m)){
			l=m;
		}else r=m;
	}
	cout<<l<<endl;
}	



#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...