제출 #763732

#제출 시각아이디문제언어결과실행 시간메모리
763732PetrixJob Scheduling (CEOI12_jobs)C++17
0 / 100
1086 ms7300 KiB
#include <iostream> #include <algorithm> using namespace std; struct vc{ int a,ind; }v[1000000]; bool cmp(vc a,vc b){ if(a.a<b.a) return 1; else return 0; } int n,m; bool verf(int mij){ int z,i,dr,st,mmij,rasp; z=mij-1;i=1; while(z<m-1 && i<=n){///printf("a"); dr=z;rasp=dr; st=z-mij+1; while(st<dr){ mmij=(st+dr)/2; if(v[mmij].a>i) dr=mmij-1; else{ rasp=mmij; st=mmij-1; } } z=rasp; if(i>v[z].a) break; i++; z=min(z+mij,m-1); } if(z<m-1 && i<=n) return 0; else return 1; } int main() { int st,dr,mij,d,rasp,i,vf,poz,j; cin>>n>>d>>m; for(i=0;i<m;i++){ cin>>v[i].a; v[i].ind=i+1; v[i].a+=d; } sort(v,v+m,cmp); st=1;dr=1000000;rasp=mij=0; while(st<dr){ mij=(st+dr)/2; vf=verf(mij); if(vf==1){ rasp=mij; dr=mij-1; }else{ st=mij+1; } } cout<<rasp<<"\n"; poz=0; for(i=0;i<n;i++){ for(j=0;j<rasp && poz<m;j++){ cout<<v[poz].ind<<" "; poz++; } cout<<"0\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...