Submission #93993

#TimeUsernameProblemLanguageResultExecution timeMemory
93993rkocharyanJob Scheduling (CEOI12_jobs)C++14
0 / 100
68 ms380 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 7; int n, d, m; int f[N]; bool check(int t) { deque < pair <int, int> > h; for(int i = 1; i <= n; i++) { h.emplace_back(i, f[i]); int cur_t = t; while(!h.empty() && cur_t) { if(i - h[0].first > d) return false; int next_t = cur_t; next_t -= min(h[0].second, cur_t); h[0].second -= min(h[0].second, cur_t); cur_t = next_t; if(h[0].second == 0) { h.pop_front(); } } } if(h.size()) return false; return true; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> d >> m; for(int i = 0; i < m; i++) { int x; cin >> x; f[x]++; } int low = 1, high = n, best = n; while(low <= high) { int mid = (low + high) >> 1; if(check(mid)) { best = mid; high = mid - 1; } else { low = mid + 1; } } cout << best << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...