Submission #1208642

#TimeUsernameProblemLanguageResultExecution timeMemory
1208642Vivek_03_Job Scheduling (CEOI12_jobs)C++20
0 / 100
164 ms20552 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; int main() { int n,d,m; cin>>n>>d>>m; vector<int> v(n+1); vector<vector<int>> idx(n+1); vector<int> ct_idx(n+1); for(int i=1;i<=m;i++) { int start; cin>>start; v[start+d]++; idx[start+d].push_back(i); } int ans=1; vector<vector<int>> result(n+1); for(int i=1;i<=n;i++) { int in_use = v[i]; // i is the deadline day. v[i]->number of tasks on the day of deadline if(v[i]>0) { if(ans < v[i]) { ans = v[i]; } else v[i]=0; for(int j=ct_idx[i];j<idx[i].size();j++) result[i].push_back(idx[i][j]); } int available = ans - in_use, j=i+1; //cout<<available<<"\n\n\n"; while(available > 0 && j<=n && j-i<=d) { if(v[j]==0) { j++; continue; } int temp = min(available, v[j]), k; v[j] -= temp; available -= temp; for(k=ct_idx[j];k<min(temp+ct_idx[j], (int)idx[j].size());k++) result[i].push_back(idx[j][k]); ct_idx[j] = k; j++; } } cout<<ans<<'\n'; for(int i=1;i<=n;i++) { for(int j=0;j<result[i].size();j++) cout<<result[i][j]<<" "; cout<<"0\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...