Submission #648316

#TimeUsernameProblemLanguageResultExecution timeMemory
648316DarkLightningLordJob Scheduling (CEOI12_jobs)C++17
40 / 100
711 ms27636 KiB
#include <algorithm> #include <iostream> using namespace std; string ans; long long N, D, M, a; const long long max_m = 1e6; pair<int, int> job_requests[max_m]; bool check(long long m) { string t = ""; long long day = 0; long long job_index = 0; bool stop = false; while (job_index < M && day < (N + D)) { day++; for (int i = 0; i < m; i++) { long long c_day = job_requests[job_index].first; if (day > c_day + D) {stop = true; break; } t.append(to_string(job_requests[job_index].second + 1)); t.append(" "); job_index++; } t.append("0\n"); if (stop) break; } for (long long i = day; i < N; i++) { t.append("0\n"); } if (job_index == M) ans = t; return job_index == M; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> N >> D >> M; for (int i = 0; i < M; i++) { cin >> a; job_requests[i] = make_pair(a, i); } sort(job_requests, job_requests + M); long long l = 0, r = M; while (l < r) { long long m = l + (r - l) / 2; if (check(m)) { r = m; } else { l = m + 1; } } cout << r << "\n" << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...