Submission #534166

#TimeUsernameProblemLanguageResultExecution timeMemory
534166Paul_Liao_1457Self Study (JOI22_ho_t2)C++17
0 / 100
429 ms5084 KiB
// 還要更強 #include<iostream> #include<queue> #include<set> #include<map> #include<iomanip> #include<math.h> #include<cstring> #include<stack> #include<string.h> #include<random> #include<algorithm> #include<vector> #include <cassert> #define ll long long #define FOR(i,a,b) for(ll i=a;i<b;i++) #define REP(i,a,b) for(int i=a;i>=b;i--) #define INF (ll)(2e18) #define pb push_back #define F first #define S second using namespace std; ll n,m; ll A[300005],B[300005]; bool check(ll x){ ll res=0; FOR(i,0,n){ ll tmp=x; if(1ll*A[i]*m<tmp){ tmp-=A[i]*m; if(B[i]<=0) exit(-1); res-=tmp/B[i]+(tmp%B[i]?1:0); } else{ if(A[i]<=0) exit(-1); ll used=(tmp-1)/A[i]+1; if(used<=0||used>m) exit(-1); res+=min(m-1,m-used); } } if(res>=0) return 1; return 0; } signed main(){ cin>>n>>m; FOR(i,0,n){ cin>>A[i]; } FOR(i,0,n){ cin>>B[i]; A[i]=max(A[i],B[i]); } ll l=1,r=(1e18+1),ans=1; while(l<r){ ll mid=(l+r)>>1; if(check(mid)){ ans=max(ans,mid); l=mid+1; } else{ r=mid; } } cout<<ans<<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...