Submission #340200

#TimeUsernameProblemLanguageResultExecution timeMemory
340200blueJob Scheduling (CEOI12_jobs)C++11
100 / 100
409 ms17252 KiB
#include <iostream> #include <algorithm> using namespace std; int N, D, M; //days, delay, jobs struct job { int i; //ind int d; //day }; bool operator < (job A, job B) { return A.d < B.d; } job J[1000000]; int b_search(int a, int b) { // cout << a << ' ' << b << '\n'; if(a == b) return a; int m = (a+b)/2; int done = 0; //number of jobs done for(int i = 1; i <= N; i++) { if(done < M && J[done].d + D < i) { // cout << i << "too long" << '\n'; return b_search(m+1, b); } for(int j = 0; j < m && done < M && J[done].d <= i; j++) { done++; } } if(done < M) return b_search(m+1, b); else return b_search(a, m); } int main() { cin >> N >> D >> M; for(int i = 0; i < M; i++) { cin >> J[i].d; J[i].i = i+1; } sort(J, J+M); int m = b_search(1, M); int done = 0; cout << m << '\n'; for(int i = 1; i <= N; i++) { for(int j = 0; j < m && done < M && J[done].d <= i; j++) { cout << J[done].i << ' '; done++; } cout << "0\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...