제출 #754069

#제출 시각아이디문제언어결과실행 시간메모리
754069textotJob Scheduling (CEOI12_jobs)C++17
0 / 100
1069 ms22296 KiB
#include <bits/stdc++.h> using namespace std; #define MAXN 2000000 #define int long long struct request{ int day; int id; }; bool sortbyday(request &r1, request &r2){ return r1.day<r2.day; } int numreqs, numdays, maxdelay; request jobreqs[MAXN]; bool works(int nummach){ int day = 1; //check jobreqs by chucks of size nummach and see if any of the jobs are overdue while(numreqs>(day-1)*nummach){ for(int i = 0; i < nummach; i++){ if(jobreqs[(day-1)*nummach+i].day<day-maxdelay){ //overdue job check return false; } } day++; } return true; } signed main(){ cin>>numdays>>maxdelay>>numreqs; int day; for(int i = 1; i <= numreqs; i++){ cin>>day; jobreqs[i-1] = {day, i}; } sort(jobreqs, jobreqs+numreqs, sortbyday); int lo = 1, hi = MAXN; while(lo!=hi){ int mid = (lo+hi)/2; if(works(mid)){ hi = mid; } else{ lo = mid + 1; } } cout<<lo<<endl; int index = 0; for(int i = 0; i < numdays; i++){ for(int j = 0; j < lo; j++){ if(index < numreqs){ cout<<jobreqs[index].id<<" "; index++; } } cout<<0<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...