제출 #1327007

#제출 시각아이디문제언어결과실행 시간메모리
1327007hoangtien69Job Scheduling (CEOI12_jobs)C++20
100 / 100
109 ms18748 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 5; int n, d, m; int a[MAXN]; vector<int> peal[100005]; vector<int> res[MAXN]; bool ck(int x) { int cnt = 0; int j = 1; for (int i = 1; i <= n - d; i++) { int k = 0; if (j < i) { j = i; cnt = 0; } while(k < peal[i].size() and j <= n and j <= i + d) { cnt++; k++; if (cnt == x) { cnt = 0; j++; } } if (k < peal[i].size()) { return false; } } return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> d >> m; for (int i = 1; i <= m; i++) { cin >> a[i]; peal[a[i]].push_back(i); } int l = 1; int r = m; int ans = -1; while(l <= r) { int mid = (l + r) / 2; if (ck(mid)) { ans = mid; r = mid - 1; } else { l = mid + 1; } } cout << ans << "\n"; int j = 1; for (int i = 1; i <= n - d; i++) { int k = 0; j = max(j, i); while(k < peal[i].size() and j <= n and j <= i + d) { res[j].push_back(peal[i][k]); k++; if (res[j].size() == ans) { j++; } } } for (int i = 1; i <= n; i++) { for (auto v : res[i]) { cout << v << " "; } cout << 0 << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...