Submission #1141858

#TimeUsernameProblemLanguageResultExecution timeMemory
1141858hennesseySelf Study (JOI22_ho_t2)C++20
10 / 100
205 ms11260 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main() { //your code goes here int n, m; cin >> n >> m; vector <int> arr = {}; vector <int> arr2 = {}; vector <int> arr3 = {}; for(int i = 0; i < n; i++) { int num; cin >> num; arr.push_back(num); } for(int i = 0; i < n; i++) { int num; cin >> num; arr2.push_back(num); } for(int i = 0; i < n; i++) { int v = max(arr[i], arr2[i]); int v2 = v*m; arr3.push_back(v2); } int ans = 0; int lo = 0; int hi = 1e18; while(lo <= hi) { int mid = (lo+hi)/2; int total = 0; for(int i = 0; i < n; i++) { int v = arr3[i]; int v2 = mid-v; int v3 = arr[i]; int v4 = arr2[i]; if(v2 == 0) { continue; } if(v2 > 0) { int v5 = (v2/v4); if((v2%v4) != 0) { // if(mid == 18) { // cout << v5 << " " << total << endl; // } v5++; } if(v5 == 0 && m == 1) { cout << 1e18 << endl; break; } total += v5; } else { int v5 = abs(v2)/max(v3, v4); // if(v5 != 0 && m == 1) { // cout << 1e18 << endl; // break; // } total -= v5; } } if(total <= 0) { ans = max(ans, mid); lo = mid+1; } else { hi = mid-1; } } int minv = 1e18; for(int i = 0; i < n; i++) { int v = max(arr[i], arr2[i]); minv = min(minv, v); } if(m == 1) { if(ans <= minv) { cout << ans << endl; } else { cout << minv << endl; } } else { cout << ans << 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...