Submission #854393

#TimeUsernameProblemLanguageResultExecution timeMemory
854393anhphantJob Scheduling (CEOI12_jobs)C++14
55 / 100
38 ms2684 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl '\n' ll N, D, M; pair<ll, ll> A[100007]; void initialize() { ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N >> D >> M; for(int i = 1; i <= M; ++i) { cin >> A[i].first; A[i].second = i; } //for(int i = 1; i <= M; ++i) cerr << A[i].first << "," << A[i].second << " "; cerr << endl; sort(A + 1, A + 1 + M); //for(int i = 1; i <= M; ++i) cerr << A[i].first << "," << A[i].second << " "; cerr << endl; } bool check(ll MachinesCnt) { //cerr << "MachinesCnt = " << MachinesCnt << endl; int idx = 1; for(int day = 1; day <= N; ++day) { //cerr << "Day " << day << " : " << endl; ll used_machines_in_day = 0; while(idx <= M && used_machines_in_day < MachinesCnt) { if (day < A[idx].first || A[idx].first + D < day) break; //cerr << "job " << idx << " is going to work with time at " << A[idx] << endl; used_machines_in_day++; idx++; } //cerr << "used_machines_in_day : " << used_machines_in_day << endl; //cerr << "used_machines_all_times : " << idx - 1 << endl; //cerr << endl; } return idx > M; } void construct(ll MachinesCnt) { //for(int i = 1; i <= M; ++i) cerr << A[i].first << "," << A[i].second << " "; cerr << endl; int idx = 1; for(int day = 1; day <= N; ++day) { //cerr << "Day " << day << " : " << endl; ll used_machines_in_day = 0; while(idx <= M && used_machines_in_day < MachinesCnt) { if (day < A[idx].first || A[idx].first + D < day) break; //cerr << "job " << idx << " is going to work with time at " << A[idx] << endl; cout << A[idx].second << " "; used_machines_in_day++; idx++; } cout << 0 << endl; //cerr << "used_machines_in_day : " << used_machines_in_day << endl; //cerr << "used_machines_all_times : " << idx - 1 << endl; //cerr << endl; } } void process() { ll l = 1, r = M; while(l < r) { ll mid = (l + r) / 2; if (check(mid)) r = mid; else l = mid + 1; } cout << l << endl; construct(l); } int main() { initialize(); process(); }
#Verdict Execution timeMemoryGrader output
Fetching results...