제출 #706342

#제출 시각아이디문제언어결과실행 시간메모리
706342BodishaJob Scheduling (CEOI12_jobs)C++17
55 / 100
489 ms14444 KiB
#include <bits/stdc++.h> #define MAX_M 1000005 using namespace std; int n, d, m; pair<int, int> requests[MAX_M]; bool cmp(pair<int, int> a, pair<int, int> b) { if(a.first == b.first) { return a.second < b.second; } return a.first < b.first; } bool check(int x) { int max_d = 0; for(int i = 0; i < m; i++) { int day = (i / x) + 1; max_d = max(max_d, day - requests[i].first); } if(max_d <= d) { return true; } else { return false; } } int main() { cin >> n >> d >> m; for(int i = 0; i < m; i++) { cin >> requests[i].first; requests[i].second = i + 1; } sort(requests, requests + m, cmp); int l = 1, r = m; int ans = 1; while(l <= r) { int mid = l + (r - l) / 2; if(check(mid)) { ans = mid; r = mid - 1; } else { l = mid + 1; } } cout << ans << "\n"; int ptr = 0; for(int i = 0; i < n; i++) { int counter = 0; while(ptr < m && counter < ans) { cout << requests[ptr].second << " "; ptr++; counter++; } cout << "0\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...