Submission #588066

#TimeUsernameProblemLanguageResultExecution timeMemory
588066MounirSelf Study (JOI22_ho_t2)C++14
0 / 100
1090 ms6096 KiB
#include <bits/stdc++.h> #define all(v) v.begin(), v.end() #define sz(x) (int)x.size() #define pb push_back #define pii pair<int, int> #define chmin(x, v) x = min(x, v) #define chmax(x, v) x = max(x, v) #define print(x) cout << #x << " est " << x << endl; #define x first #define y second #define int long long using namespace std; const int N = 1e6; int nCours, nWeeks; int a[N], b[N]; bool isOk(int bInf){ int aAllouer = 0; for (int iCours = 0; iCours < nCours; ++iCours){ int besoin = ceil(bInf/(long double)(a[iCours])); if (besoin <= nWeeks) aAllouer += nWeeks - besoin; else { int reste = bInf - nWeeks * a[iCours]; reste = ceil((long double)(reste)/b[iCours]); aAllouer -= reste; } } // cout << aAllouer return aAllouer >= 0; } signed main(){ cin >> nCours >> nWeeks; for (int i = 0; i < nCours; ++i) cin >> a[i]; for (int i = 0; i < nCours; ++i){ cin >> b[i]; chmax(a[i], b[i]); } int gauche = 0, droite = 1e15; while (droite > gauche){ int mid = (gauche + droite)/2 + 1; if (isOk(mid)) gauche = mid; else droite = mid - 1; } cout << gauche << endl; return 0; }
#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...