Submission #1277258

#TimeUsernameProblemLanguageResultExecution timeMemory
1277258soabJob Scheduling (CEOI12_jobs)C++20
0 / 100
1097 ms14460 KiB
// soab #include <bits/stdc++.h> using namespace std; #define int long long #define nl '\n' #define fi first #define se second void io() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } const int maxn = 1e6 + 1; int n, m, d; pair<int,int> a[maxn]; bool check(int mid) { int id = 0; for(int i = 1; i <= n; i++) { if(id >= m) break; for(int j = 0; j < mid; j++) { if(id >= m) break; if(a[id].fi <= i) { if(i - a[id].fi <= d) id++; else return 0; } } } return id == m; } signed main() { io(); cin >> n >> d >> m; for(int i = 0; i < m; i++) { int t; cin >> t; a[i] = {t, i + 1}; } sort(a, a + m); int l = 0, r = 1e8, ans; while(l <= r) { int mid = (l + r) / 2; if(check(mid)) { ans = mid; r = mid - 1; } else { l = mid + 1; } } cout << ans << nl; vector<vector<int>> v(n + 1); int id = 0; for(int i = 1; i <= n; i++) { if(id >= m) break; for(int j = 0; j < ans; j++) { if(id >= m) break; if(a[id].fi <= i) { if(i - a[id].fi <= d) { v[i].push_back(a[id].se); id++; } else break; } } } for(int i = 1; i <= n - d; i++) { for(auto j : v[i]) cout << j << ' '; cout << 0 << nl; } cout << 0 << nl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...