제출 #104809

#제출 시각아이디문제언어결과실행 시간메모리
104809WLZJob Scheduling (CEOI12_jobs)C++17
0 / 100
6 ms512 KiB
#include <bits/stdc++.h>
using namespace std;

int n, d, m;
vector<int> a;
vector< vector<int> > v;

int check(int k) {
  vector<int> cnt(n + 1, 0);
  int last = 0;
  for (int i = 1; i <= n; i++) {
    if (a[i] == 0) {
      continue;
    }
    int left = a[i];
    int pos = d + 1;
    if (last >= i) {
      left -= k - cnt[last];
      pos = i + d - last;
    }
    if ((left + k - 1) / k > pos) {
      return 0;
    }
    last = max(i, last) + (left + k - 1) / k;
    cnt[last] = left % k;
  }
  return 1;
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  freopen("in.txt", "r", stdin);
  cin >> n >> d >> m;
  a.assign(n + 1, 0);
  v.resize(n + 1);
  for (int i = 1; i <= m; i++) {
    int x;
    cin >> x;
    a[x]++;
    v[x].push_back(i);
  }
  int lo = 1, hi = m, ans;
  while (lo <= hi) {
    int mid = (lo + hi) / 2;
    if (check(mid)) {
      ans = mid;
      hi = mid - 1;
    } else {
      lo = mid + 1;
    }
  }
  vector< vector<int> > ansv(n + 1);
  for (int i = 1; i <= n; i++) {
    int pos = i;
    while (!v[i].empty()) {
      while (pos <= n && (int) ansv[pos].size() < ans && !v[i].empty()) {
        ansv[pos].push_back(v[i].back());
        v[i].pop_back();
      }
      pos++;
    }
  }
  cout << ans << '\n';
  for (int i = 1; i <= n; i++) {
    for (auto& x : ansv[i]) {
      cout << x << ' ';
    }
    cout << 0 << '\n';
  }
  return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

jobs.cpp: In function 'int main()':
jobs.cpp:33:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen("in.txt", "r", stdin);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
jobs.cpp:57:23: warning: 'ans' may be used uninitialized in this function [-Wmaybe-uninitialized]
       while (pos <= n && (int) ansv[pos].size() < ans && !v[i].empty()) {
              ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...