Submission #575354

#TimeUsernameProblemLanguageResultExecution timeMemory
575354ddy888Job Scheduling (CEOI12_jobs)C++17
25 / 100
292 ms47948 KiB
#undef _GLIBCXX_DEBUG #include <bits/stdc++.h> using namespace std; using ll = long long; #define pb push_back #define fi first #define si second typedef pair<int,int> pi; typedef tuple<int,int,int> ti; void debug_out() {cerr<<endl;} template <typename Head, typename... Tail> void debug_out(Head _H, Tail... _T) {cerr<<" "<<to_string(_H);debug_out(_T...);} #define debug(...) cerr<<"["<<#__VA_ARGS__<<"]:",debug_out(__VA_ARGS__) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MAXN = 1000010; int n, d, m; pi arr[MAXN]; vector<int> ans[MAXN]; bool good(int num) { vector<int> cur[n + 1]; int j = 1; for (int i = 1; i <= n; ++i) { int cnt = num; while (j <= m && cnt && arr[j].fi <= i) { if (i - arr[j].fi > d) return false; cur[i].pb(arr[j].si); ++j; --cnt; } } if (j >= m) { for (int i = 1; i <= n; ++i) ans[i] = cur[i]; return true; } return false; } 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 >> arr[i].fi, arr[i].si = i; sort(arr + 1, arr + 1 + m); int lo = 0, hi = n + 1; while (lo + 1 < hi) { int mid = (lo + hi) >> 1; if (good(mid)) hi = mid; else lo = mid; } cout << hi << '\n'; for (int i = 1; i <= n; ++i) { for (auto j: ans[i]) cout << j << ' '; cout << 0 << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...