제출 #540454

#제출 시각아이디문제언어결과실행 시간메모리
540454BhavayGoyalJob Scheduling (CEOI12_jobs)C++14
100 / 100
503 ms26452 KiB
#include <bits/stdc++.h> using namespace std; #define vii vector<vector<int>> #define pii pair<int, int> #define f first #define s second int inf = 1e9; int n, d, m; pair<bool, vii> isFiss(int mid, vector<pii> &arr) { int idx = 0; vii answer(n); for (int i = 1; i <= n; i++) { for (int j = 0; j < mid; j++) { if (arr[idx].f > i) break; if (i <= arr[idx].f + d) answer[i-1].push_back(arr[idx++].s); else return {false, answer}; if (idx == m) return {true, answer}; } } return {false, answer}; } void sol() { cin >> n >> d >> m; vector<pii> arr(m); for (int i = 0; i < m; i++) { cin >> arr[i].f; arr[i].s = i+1; } sort (arr.begin(), arr.end()); int i = 1, j = m; int ans = m; vii actualans; while (i <= j) { int mid = (i+j)/2; auto f = isFiss(mid, arr); if (f.f) { actualans = f.s; ans = mid; j = mid-1; } else i = mid+1; } cout << ans << endl; for (int i = 0; i < n; i++) { for (auto j : actualans[i]) cout << j << " "; cout << 0 << endl; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int t; t = 1; // cin >> t; for (int i = 1; i <= t; i++) sol(); }
#Verdict Execution timeMemoryGrader output
Fetching results...