Submission #694191

#TimeUsernameProblemLanguageResultExecution timeMemory
694191vjudge1Job Scheduling (CEOI12_jobs)C++17
35 / 100
185 ms20080 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define all(s) s.begin(), s.end() #ifndef LOCALDEBUG #define LOCALDEBUG false #endif typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pii; struct request { int day, id; bool operator<(const request &a) { return day < a.day; } }; int n, d, m; request jobs[(int)1e6 + 1]; bool check(int machines) { int nxt = 0; for (int i = 1; i <= n; i++) { int mm = machines; while (nxt < m && mm--) { request cur = jobs[nxt]; if (cur.day + d < i) return false; else nxt++; } } return nxt == m; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> d >> m; for (int i = 0; i < m; i++) { cin >> jobs[i].day; jobs[i].id = i; } sort(jobs, jobs + m); int lo = 1, hi = 1e6; while (lo < hi) { int mid = (lo + hi) / 2; if (check(mid)) hi = mid - 1; else lo = mid + 1; } cout << lo << '\n'; vvi onDay(n + 1); int nxt = 0; for (int i = 1; i <= n; i++) { int mm = lo; while (nxt < m && mm--) onDay[i].pb(jobs[nxt++].id); } for (int i = 0; i < n; i++) { for (int id : onDay[i + 1]) cout << id + 1 << " "; cout << "0\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...