Submission #1233228

#TimeUsernameProblemLanguageResultExecution timeMemory
123322812345678Self Study (JOI22_ho_t2)C++17
100 / 100
110 ms5136 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int nx=3e5+5; ll n, m, a[nx], b[nx], l=1, r=1e18; bool check(ll x) { // return 1 when we can do x ll cnt=0; for (int i=1; i<=n; i++) { // calculate minimum classes needed in order to make comprehension level of i'th subject >= x // a[i]>=b[i] ll cnta=0, cntb=0, curx=x; // amount of classes that we take A if (x%a[i]==0) cnta=x/a[i]; else cnta=x/a[i]+1; if (cnta<=m) // purely study in class is enough { cnt+=cnta; } else { curx-=m*a[i]; if (curx%b[i]==0) cntb=curx/b[i]; else cntb=curx/b[i]+1; cnt+=m+cntb; } if (cnt>n*m) return 0; } return 1; } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>m; for (int i=1; i<=n; i++) cin>>a[i]; for (int i=1; i<=n; i++) cin>>b[i], a[i]=max(a[i], b[i]); while (l<r) { ll md=(l+r+1)/2; if (check(md)) l=md; else r=md-1; } cout<<l; }
#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...