제출 #1197218

#제출 시각아이디문제언어결과실행 시간메모리
1197218vtnooSelf Study (JOI22_ho_t2)C++20
62 / 100
95 ms5136 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); ll n,m;cin>>n>>m; __int128 limite=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){ __int128 cur=min((tar+A[i]-1)/A[i], m); clases+=cur; __int128 self=tar-cur*A[i]; if(self>0)//debo estudiar fuera de clase clases+=(self+B[i]-1)/B[i]; if(clases>limite)return false; } return true; }; ll l=-1, 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...