Submission #987415

#TimeUsernameProblemLanguageResultExecution timeMemory
987415OAleksaJob Scheduling (CEOI12_jobs)C++14
0 / 100
3455 ms65536 KiB
#include <bits/stdc++.h> #define f first #define s second using namespace std; const int N = 1e6 + 69; int n, d, m, a[N], b[N]; vector<int> g[N]; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while (tt--) { cin >> n >> d >> m; vector<int> c; c.push_back(0); for (int i = 1;i <= m;i++) { cin >> a[i]; g[a[i]].push_back(i); c.push_back(a[i]); } sort(c.begin(), c.end()); int l = 1, r = m, ans = 0; auto check = [&](int mid) { int t = 0; for (int i = 1;i <= m;i++) b[i] = (i + mid - 1) / mid; for (int i = 1;i <= m;i++) { t += 1; if (t > mid) { b[i] = b[i - 1] + 1; t = 1; } if (b[i] < c[i]) { b[i] = c[i]; t = 1; } } for (int i = 1;i <= m;i++) { if (c[i] + d < b[i]) return false; } return true; }; while (l <= r) { int mid = (l + r) / 2; if (check(mid)) { ans = mid; r = mid - 1; } else l = mid + 1; } cout << ans << '\n'; for (int i = 1;i <= n;i++) { if (i > n - d) { cout << 0 << '\n'; continue; } for (int j = 1;j <= ans + 1;j++) cout << 0 << ' '; cout << '\n'; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...