Submission #202307

#TimeUsernameProblemLanguageResultExecution timeMemory
202307quocnguyen1012Job Scheduling (CEOI12_jobs)C++14
100 / 100
412 ms23672 KiB
#include <bits/stdc++.h>

#define fi first
#define se second
#define mp make_pair
#define pb push_back

using namespace std;
typedef long long ll;

const int maxn = 1e5 + 5;

int N, M, D;
vector<int> add[maxn];
vector<int> res[maxn];

bool check(int v)
{
  deque<pair<int, int>> dq;
  for (int i = 1; i <= N; ++i){
    res[i].clear();
    for (auto & x : add[i]){
      dq.pb(mp(i, x));
    }
    if (dq.size()){
      if (dq.front().fi + D < i) return false;
    }
    int sz = dq.size();
    for (int j = 0; j < min((int)sz, v); ++j){
      int x = dq.front().se;
      res[i].pb(x); dq.pop_front();
    }
  }
  if (dq.size()) return false;
  return true;
}

signed main(void)
{
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  if (fopen("A.INP", "r")){
    freopen("A.INP", "r", stdin);
    freopen("A.OUT", "w", stdout);
  }
  cin >> N >> D >> M;
  for (int i = 1; i <= M; ++i){
    int v; cin >> v;
    add[v].pb(i);
  }
  int l = 1, r = M, mid;
  while (l <= r){
    mid = (l + r) / 2;
    if (check(mid)) r = mid - 1;
    else l = mid + 1;
  }
  cout << l << '\n';
  check(l);
  for (int i = 1; i <= N; ++i){
    for (auto & x : res[i]) cout << x << ' ';
    cout << "0\n";
  }
}

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:42:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     freopen("A.INP", "r", stdin);
     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
jobs.cpp:43:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     freopen("A.OUT", "w", stdout);
     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...