제출 #532335

#제출 시각아이디문제언어결과실행 시간메모리
532335Alex_tz307Job Scheduling (CEOI12_jobs)C++17
0 / 100
172 ms17588 KiB
#include <bits/stdc++.h> using namespace std; const int kN = 1e5; const int kM = 1e6; int n, d, m, dq[kM]; pair<int, int> a[kM]; vector<int> sol[1 + kN]; /* 8 2 12 1 2 4 2 1 3 5 6 2 3 6 4 */ bool check(int k, bool ok = false) { int l = 0, r = -1; for (int i = 0; i < k; ++i) { dq[++r] = 0; } for (int i = 0; i < m; ++i) { int t = dq[l++]; if (t > a[i].first + d) { return false; } dq[++r] = max(a[i].first + 1, t + 1); if (ok) { sol[dq[r] - 1].emplace_back(a[i].second + 1); } } return true; } void testCase() { cin >> n >> d >> m; for (int i = 0; i < m; ++i) { cin >> a[i].first; a[i].second = i; } sort(a, a + m); int l = 1, r = m; while (l <= r) { int mid = (l + r) / 2; if (check(mid)) { r = mid - 1; } else { l = mid + 1; } } cout << l << '\n'; check(l, true); for (int i = 1; i <= n; ++i) { sol[i].emplace_back(0); for (int x : sol[i]) { cout << x << ' '; } cout << '\n'; } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int tests = 1; for (int tc = 0; tc < tests; ++tc) { testCase(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...