Submission #1275288

#TimeUsernameProblemLanguageResultExecution timeMemory
1275288m_a_dJob Scheduling (CEOI12_jobs)C++20
0 / 100
307 ms34748 KiB
#include <bits/stdc++.h> using namespace std; #define int long long bool check(vector<pair<int, int>> jobs, int machine_a, int d, int n) { int jobs_ptr=0; for(int i=0; i<n; ++i) { if(i>jobs[jobs_ptr].first+d) return false; int available=machine_a; while(available>0 && jobs_ptr<jobs.size() && jobs[jobs_ptr].first<=i) { available--; jobs_ptr++; } if(i>jobs[jobs_ptr].first+d) return false; if(jobs_ptr==jobs.size()) return true; } cout << jobs_ptr; return false; } int32_t main() { int n, d, m; cin >> n >> d >> m; vector<pair<int, int>> jobs(m); for(int i=0; i<m; ++i) cin >> jobs[i].first, jobs[i].first--, jobs[i].second=i; sort(jobs.begin(), jobs.end()); int lo=1, hi=m; int mid; while(lo<hi) { mid=lo+(hi-lo)/2; if(check(jobs, mid, d, n)) { hi=mid; } else { lo=mid+1; } } cout << hi << "\n"; int jobs_ptr=0; for(int i=0; i<n; ++i) { if(i>jobs[jobs_ptr].first+d) return false; int available=hi; while(available>0 && jobs_ptr<jobs.size() && jobs[jobs_ptr].first<=i) { available--; cout << jobs[jobs_ptr].second+1 << " "; jobs_ptr++; } cout << 0 << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...