Submission #528696

#TimeUsernameProblemLanguageResultExecution timeMemory
528696AanjaneyJob Scheduling (CEOI12_jobs)C++17
80 / 100
466 ms50040 KiB
#include <bits/stdc++.h> #define ll long long #define ull unsigned long long #define MOD 1000000007 #define MODA 998244353 #define pb push_back #define mp make_pair #define sortv(v) sort(v.begin(), v.end()) #define sorta(A, N) sort(A, A + N) #define debug(x) cerr << #x << " is " << x; #define rep(i, a, N) for (ll i = a; i < N; i++) #define f first #define s second #define uniq(v) \ { \ sort(v.begin(), v.end()); \ v.erase(unique(v.begin(), v.end()), v.end()); \ } #define speed \ ios_base::sync_with_stdio(false); \ cin.tie(NULL); \ cout.tie(NULL); using namespace std; ll N, D, M; pair<bool, vector<vector<ll> > > check(const vector<pair<ll, ll> > &jobs, ll machineCount) { vector<vector<ll> > schedule(N); ll reqNum = 0; rep(day, 1, N + 1) { rep(j, 0, machineCount) { if (jobs[reqNum].first > day) break; if (jobs[reqNum].first + D >= day) schedule[day - 1].pb(jobs[reqNum++].second); else return mp(false, schedule); if (reqNum == M) return mp(true, schedule); } } return mp(false, schedule); } void solve(ll tcase) { cin >> N >> D >> M; vector<pair<ll, ll> > a(M); rep(i, 0, M) { cin >> a[i].f; a[i].s = i; } sortv(a); ll lo = 1, hi = M + 1; pair<bool, vector<vector<ll> > > p; while (lo < hi) { ll mid = (lo + hi) / 2; p = check(a, mid); if (p.f) hi = mid; else lo = mid + 1; } cout << hi << "\n"; p = check(a, hi); rep(i, 0, N) { for (auto j : p.s[i]) cout << j + 1 << ' '; cout << "0\n"; } } int main() { speed; ll t = 1; rep(i, 1, t + 1) solve(i); }
#Verdict Execution timeMemoryGrader output
Fetching results...