Submission #1088845

#TimeUsernameProblemLanguageResultExecution timeMemory
1088845akamizaneJob Scheduling (CEOI12_jobs)C++17
100 / 100
263 ms26460 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int,int>; #define el cout << '\n' #define fi first #define se second #define pb push_back #define all(x) x.begin(), x.end() #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define FOD(i, a, b) for (int i = (a); i >= (b); i--) #define REP(i, n) for (int i = 0; i < (n); i++) template <class T1, class T2>void chmax(T1 &a, T2 b){a = max(a, b);} template <class T1, class T2>void chmin(T1 &a, T2 b){a = min(a, b);} mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int maxn = 2e5 + 5; const ll mod = 998244353; int n, d, m; vector<pii> x; pair<bool, vector<vector<int>>> check (int mid){ int cur = 0; vector<vector<int>> ans(n + 1); for (int day = 1; day <= n; day++){ for (int j = 0; j < mid; j++){ if (x[cur].fi > day) break; if (x[cur].fi + d < day) return {false, ans}; ans[day].pb(x[cur].se); cur++; if (cur == m) return {true, ans}; } } return {false, ans}; } void solve(){ cin >> n >> d >> m; x.resize(m); REP(i, m){ cin >> x[i].fi; x[i].se = i + 1; } sort(all(x)); vector<vector<int>> ans; int l = 0, r = m + 1; while(r - l > 1){ int m = (l + r) / 2; auto [res1, res2] = check(m); if (res1) r = m, ans = res2; else l = m; } cout << r << '\n'; FOR(i, 1, n){ for (auto v : ans[i]) cout << v << " "; cout << 0 << '\n'; } } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int tests = 1; //cin >> tests; for (int itest = 1; itest <= tests; itest++){ //cerr << "- TEST " << itest << ": \n"; solve(); //el; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...