Submission #1299566

#TimeUsernameProblemLanguageResultExecution timeMemory
1299566mlecioJob Scheduling (CEOI12_jobs)C++20
55 / 100
304 ms14644 KiB
#include <bits/stdc++.h> using namespace std; int main(){ int n,m,d; cin>>n>>d>>m; vector<int>cnt(n+1),cnt2(n+1); vector<pair<int,int>>xd(m); for(int i=0;i<m;i++){ int x; cin>>x; cnt[x]++; cnt2[x]++; xd[i]={x,i+1}; } sort(xd.begin(),xd.end()); int lewo=1,prawo=m+1; while(lewo<=prawo){ int mid=lewo+((prawo-lewo)/2); int akt=1; bool flaga=true; int przew=mid; for(int i=0;i<=n;i++){ if(cnt2[i]==0) continue; if(cnt2[i]>przew){ cnt2[i]-=przew; akt++; przew=0; while(cnt2[i]>mid){ cnt2[i]-=mid; akt++; } if(cnt2[i]<=mid) przew=mid-cnt2[i]; cnt2[i]=0; if(akt>i+d) flaga=false; } else{ przew-=cnt2[i]; cnt2[i]=0; if(akt>i+d) flaga=false; } } cnt2=cnt; if(flaga) prawo=mid-1; else lewo=mid+1; } cout<<lewo<<'\n'; int ile=0; for(int i=0;i<n;i++){ for(int j=0;j<lewo;j++){ if(ile<m) cout<<xd[ile].second<<' '; ile++; } cout<<0<<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...