Submission #439951

#TimeUsernameProblemLanguageResultExecution timeMemory
439951a11155Job Scheduling (CEOI12_jobs)C++14
0 / 100
250 ms3908 KiB
#include<iostream> #include<vector> #include<queue> #include<fstream> #include<algorithm> #include<limits.h> #include<stack> using namespace std; #define ll long long const long long mod = 1000000007; ll n, d, m; vector<ll> arr; vector<ll> need; bool ok(ll mid) { ll done = 0; ll left = 0; for (int i = 0; i < n; i++) { done += min(mid, arr[i] + left); if (mid < arr[i]) left += arr[i] - mid; done -= need[i]; //cout << i << ' ' << done << '\n'; if (done < 0) { return false; } } return true; } int main() { cin >> n >> d >> m; arr.resize(n); need.resize(n); for (int i = 0; i < m; i++) { int x; cin >> x; x--; arr[x]++; need[x + d]++; } ll l = 0; ll r = 1e18; ll ans = 0; while (l <= r) { ll mid = (l + r) / 2; if (ok(mid)) { ans = mid; r = mid - 1; } else l = mid + 1; } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...