Submission #989538

#TimeUsernameProblemLanguageResultExecution timeMemory
989538greenbinjackJob Scheduling (CEOI12_jobs)C++17
100 / 100
231 ms27544 KiB
#include <bits/stdc++.h>
using namespace std;

using LL = long long;

int main() {
  cin.tie(nullptr)->ios_base::sync_with_stdio(false);

  int days, delay, req;
  cin >> days >> delay >> req;
  vector < pair <int, int> > v(req);
  for (int i = 0; i < req; i++) {
    int day;
    cin >> day;
    v[i] = {day, i + 1};
  }

  sort(v.begin(), v.end());

  vector < vector <int> > ans;
  int left = 1, right = req;
  while (left < right) {
    int mid = (left + right) >> 1;

    int cur_req = 0;
    vector < vector <int> > adj(days);
    bool ok = false;

    for (int i = 1; i <= days; i++) {
      for (int j = 0; j < mid; j++) {
        if (i < v[cur_req].first) break;

        if (i <= v[cur_req].first + delay) adj[i - 1].push_back(v[cur_req++].second);
        else break;

        if (cur_req == req) ok = true;
      }
    }

    if (ok) {
      right = mid;
      ans = adj;
    } else {
      left = mid + 1;
    }
  }

  cout << right << '\n';
  for (int i = 0; i < days; i++) {
    for (auto c : ans[i]) cout << c << ' ';
    cout << 0 << '\n';
  }

  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...