Submission #416458

#TimeUsernameProblemLanguageResultExecution timeMemory
416458shubham20_03Job Scheduling (CEOI12_jobs)C++17
100 / 100
188 ms18740 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; vector<vector<int>> a; bool ok(int m) { vector<int> av(N + 1, m); for (int i = 1; i <= N - D; i++) { int jbs = a[i].size(); for (int j = i; j <= i + D && jbs; j++) { if (av[j] >= jbs) { av[j] -= jbs; jbs = 0; } else { jbs -= av[j]; av[j] = 0; } } if (jbs) return 0; } return 1; } void show(int m) { for (int i = 1, cd = 1; i <= N; i++) { int tm = m; while (tm--) { while (cd <= N && a[cd].empty()) cd++; if (cd > N) break; cout << a[cd].back() << " "; a[cd].pop_back(); } cout << "0\n"; } } signed main() { FAST; cin >> N >> D >> M; a = vector<vector<int>>(N + 1); for (int i = 1; i <= M; i++) { int x; cin >> x; a[x].pb(i); } int l = 1, r = 1e6 + 7, 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(ans); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...