Submission #447238

#TimeUsernameProblemLanguageResultExecution timeMemory
447238erkeJob Scheduling (CEOI12_jobs)C++11
95 / 100
480 ms34556 KiB
#include <bits/stdc++.h>
using namespace std;

int n, d, m;
deque<pair<int,int>> dq;
vector<vector<int>> res;

bool check(int x) {
  deque<pair<int,int>> a = dq;
  res.clear();
  res.resize(n + 1);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= x; j++) {
      int t = a.front().first;
      if (t > i) break;
      if (t + d >= i) {
        res[i].push_back(a.front().second);
        a.pop_front();
      }
      else return false;
      if (a.empty()) return true;
    }
  }
}

int main() {
  cin.tie(0)->sync_with_stdio(0);
  cin >> n >> d >> m;
  dq.resize(m);
  for (int i = 0; i < m; i++) {
    cin >> dq[i].first;
    dq[i].second = i + 1;
  }
  sort(dq.begin(), dq.end());
  int l = 1, r = 1000000, ans = -1;
  vector<vector<int>> sav;
  while (l <= r) {
    int m = (l + r) / 2;
    if (check(m)) {
      ans = m;
      sav = res;
      r = m - 1;
    }
    else l = m + 1;
  }
  cout << ans << '\n';
  for (int i = 1; i <= n; i++) {
    for (auto &j : sav[i]) cout << j << ' ';
    cout << 0 << '\n';
  }
}

Compilation message (stderr)

jobs.cpp: In function 'bool check(int)':
jobs.cpp:9:28: warning: control reaches end of non-void function [-Wreturn-type]
    9 |   deque<pair<int,int>> a = dq;
      |                            ^~
#Verdict Execution timeMemoryGrader output
Fetching results...