제출 #1272718

#제출 시각아이디문제언어결과실행 시간메모리
1272718desmond1015Job Scheduling (CEOI12_jobs)C++20
100 / 100
172 ms13876 KiB
#include "bits/stdc++.h"
using namespace std;

#define ll long long

int MOD = 1e9+7;
int INF = 1e9;

void solve() {
  int n, d, m;
  cin >> n >> d >> m;
  vector<array<int, 2>> r(m);
  for (int i = 0; i < m; i++) {
    cin >> r[i][0];
    r[i][1] = i;
  }
  sort(r.begin(), r.end());
  int lo = 1, hi = m;
  while (lo < hi) {
    int mid = lo + (hi - lo) / 2;
    int idx = 0;
    bool ok = true;
    for (int t = 1; t <= n; t++) {
      int i = 0;
      while (i < mid && idx + i < m) {
        if (r[idx + i][0] > t) {
          break;
        }
        if (r[idx + i][0] + d < t) {
          ok = false;
          goto outer;
        }
        i++;
      }
      idx += i;
      if (idx >= m) {
        break;
      }
    }
    outer:;
    if (ok) {
      hi = mid;
    } else {
      lo = mid + 1;
    }
  }
  cout << lo << '\n';
  int idx = 0;
  for (int t = 1; t <= n; t++) {
    int i = 0;
    while (i < lo && idx + i < m) {
      if (r[idx + i][0] > t) {
        break;
      }
      cout << r[idx + i][1] + 1 << ' ';
      i++;
    }
    idx += i;
    cout << "0\n";
  }
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);

  // freopen("input.txt", "r", stdin);
  // freopen("output.txt", "w", stdout);

  // freopen("input.in", "r", stdin);
  // freopen("output.out", "w", stdout);

  // int T = 1;
  // cin >> T;
  // while (T--) {
    solve();
  // }

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