Submission #1360787

#TimeUsernameProblemLanguageResultExecution timeMemory
1360787ezzzayBurgers (NOI23_burgers)C++20
100 / 100
70 ms2732 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
const int N=3e5+5;
int x[N],a[N],b[N];
int n;
int check(int mid){
	int mx=1e9;
	for(int i=1;i<=n;i++){
		int p= (x[i]-mid*a[i]) / b[i];
		mx=min(mx,p);
	}
	return mx;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>x[i];
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++)cin>>b[i];
	int lo=0,hi=1e9;
	while(hi>=lo){
		int mid=(hi+lo)/2;
		int L=0,R=mid;
		bool FLAG=1;
		for(int i=1;i<=n;i++){
			int d=abs(a[i]-b[i]);
			if(d==0){
				if(b[i]*mid>x[i]){
					FLAG=0; break;
				}
				else continue;
			}
			else if(a[i]>=b[i]){
				if(b[i]*mid>x[i]){
					FLAG=0; break;
				}
				R=min(R,(x[i]-b[i]*mid)/d);
				
			}
			else{
				if(a[i]*mid>x[i]){
					FLAG=0; break;
				}
				L=max(L,mid-(x[i]-a[i]*mid)/d);	
			}
		}
		if(FLAG and R>=L){
			lo=mid+1;
		}
		else{
			hi=mid-1;
		}
		
	}
	cout<<hi;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...