제출 #708508

#제출 시각아이디문제언어결과실행 시간메모리
708508jsathu07Job Scheduling (CEOI12_jobs)C++14
55 / 100
278 ms20680 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long int; bool calc(int n, int d, int x, vector<int> &arr, int m) { int j = 0; bool p = true; for (int i = 0; i < n; i++) { int y = x; while (y-- && j < m) { if (!(i + 1 <= arr[j] + d)) { p = false; break; } // cout << "day " << i + 1 << " processed " << j + 1 << " \n"; j++; } if (!p) break; } return p; } void solve() { int n, d, m; cin >> n >> d >> m; vector<int> arr(m, 0); vector<pair<int, int>> brr; for (int i = 0; i < m; i++) { cin >> arr[i]; brr.push_back({arr[i], i + 1}); } sort(brr.begin(), brr.end()); sort(arr.begin(), arr.end()); int l = 1, r = 1e6, ans = 1e6; while (l <= r) { int mid = (l + r) / 2; if (calc(n, d, mid, arr, m)) { ans = mid; r = mid - 1; } else { l = mid + 1; } } cout << ans << "\n"; int k = 0, rem = 0; for (auto &i : brr) { if (k == ans) { cout << 0 << "\n"; k = 0; rem++; } cout << i.second << " "; k++; } rem++; cout << 0 << "\n"; int q = n - rem; while (q--) { cout << 0 << "\n"; } } // void setIO(string s) // { // freopen((s + ".in").c_str(), "r", stdin); // freopen((s + ".out").c_str(), "w", stdout); // } int main() { // setIO("bcount"); ios_base::sync_with_stdio(false); cin.tie(NULL); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...