Submission #1168643

#TimeUsernameProblemLanguageResultExecution timeMemory
1168643abdulaziz707Job Scheduling (CEOI12_jobs)C++20
40 / 100
235 ms27468 KiB
#include <bits/stdc++.h> #define endl '\n' #define int long long #define all(x) x.begin(), x.end() #define allr(x) x.rbegin(), x.rend() using namespace std; using ll = long long; const int inf = 2e18 + 31, mod = 1e9 + 7, MX = 1e5 + 1; const double eps = 1e-8; int gcd(int a, int b){ return b ? gcd(b, a%b) : a; } int lcm(int a, int b){ return a/gcd(a, b)*b; } void solve(){ /* */ int n, m, d; cin >> n >> d >> m; vector<vector<int>> schedule(n + 1, vector<int>()); for(int i = 1, x; i <= m; i++) { cin >> x; schedule[x].push_back(i); } int l = 1, r = m, mid; function<bool(int)> check = [&](int num){ queue<pair<int,int>> q; vector<vector<int>> tsch = schedule; for(int day = 1; day <= n; day++) { for(auto x : tsch[day]) { q.push(make_pair(x, day)); } tsch[day].clear(); pair<int,int> p; for(int i = 0; i < num && !q.empty(); i++){ p = q.front(); q.pop(); if(day - p.second > d) return false; tsch[day].push_back(p.first); } } if (q.size() == 0) schedule = tsch; return q.size() == 0; }; while(l < r) { mid = l + (r - l) / 2; if(check(mid)) r = mid; else l = mid + 1; } cout << l << endl; for(int day = 1; day <= n; day++){ for(auto x : schedule[day]) cout << x << ' '; cout << 0 << endl; } } signed main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int tt = 1; //cin >> tt; while(tt --){ solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...