Submission #416425

#TimeUsernameProblemLanguageResultExecution timeMemory
416425shubham20_03Job Scheduling (CEOI12_jobs)C++17
15 / 100
329 ms26860 KiB
#include <bits/stdc++.h> using namespace std; #define FAST ios_base::sync_with_stdio(false); cin.tie(NULL) #define int long long #define deb1(x) cout << #x << "=" << x << endl; #define deb2(x, y) cout << #x << "=" << x << ", " << #y << "=" << y << endl; #define ff first #define ss second #define pb push_back int N, D, M; pair<int, int> a[1000300]; vector<int> ans_dur; bool ok(int m) { int cm = 0, cd = 1; ans_dur.clear(); for (int i = 1; i <= M; i++) { if (cm < m) { if (a[i].ff > cd) { cm = 1, cd = a[i].ff; ans_dur.pb(0); ans_dur.pb(a[i].ss); } else { cm++; ans_dur.pb(a[i].ss); if (cd - a[i].ff > D) return 0; } } else { cm = 1, cd++; ans_dur.pb(0); ans_dur.pb(a[i].ss); if (cd - a[i].ff > D) return 0; } if (cd > N) return 0; } ans_dur.pb(0); return 1; } void show() { for (int x : ans_dur) { if (x == 0) cout << "0\n"; else cout << x << " "; } } signed main() { FAST; cin >> N >> D >> M; for (int i = 1; i <= M; i++) { cin >> a[i].ff; a[i].ss = i; } sort(a + 1, a + 1 + M); int l = 1, r = M, ans = M; while (l <= r) { int m = l + (r - l) / 2; if (ok(m)) ans = m, r = m - 1; else l = m + 1; } cout << ans << "\n"; show(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...