제출 #959550

#제출 시각아이디문제언어결과실행 시간메모리
959550BlagojJob Scheduling (CEOI12_jobs)C++17
0 / 100
290 ms25256 KiB
#include <bits/stdc++.h> #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif using namespace std; #define endl '\n' #define ll long long #define all(x) x.begin(), x.end() int n, d, m; vector<pair<int, int>> v; vector<int> cur; bool check(int x) { queue<pair<int, int>> q; int cnt = 0; cur.clear(); for (int day = 1; day <= n; day++) { if (q.size() && day - q.front().first > d) return 0; while (cnt < m && v[cnt].first == day) q.push(v[cnt++]); for (int i = 0; i < x && q.size(); i++) { cur.push_back(q.front().second); q.pop(); } cur.push_back(0); } return (q.size() == 0); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> d >> m; v.resize(m); for (int i = 0; i < m; i++) { cin >> v[i].first; v[i].second = i + 1; } sort(all(v)); int l = 0, r = m; vector<int> ans; while (l + 1 < r) { int mid = (l + r) / 2; if (check(mid)) { r = mid; ans = cur; } else l = mid; } cout << r << endl; for (auto x : ans) { cout << x << " "; if (x == 0) cout << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...