Submission #1220700

#TimeUsernameProblemLanguageResultExecution timeMemory
1220700lopkusJob Scheduling (CEOI12_jobs)C++20
0 / 100
426 ms4000 KiB
#include <bits/stdc++.h>

int main() {

  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);

  int n, d, m;
  std::cin >> n >> d >> m;
  std::vector<int> a(m + 1);
  for(int i = 1; i <= m; i++) {
    std::cin >> a[i];
  }
  std::sort(a.begin() + 1, a.end());
  int l = 1, r = m, ans = - 1;
  while(l <= r) {
    int mid = (l + r) / 2;
    std::set<int> st;
    for(int i = 1; i <= mid; i++) {
      st.insert(a[i]);
    }
    int ok = 1;
    for(int i = mid + 1; i <= m; i++) {
      auto it = st.begin();
      if(*it < a[i]) {
        int old = *it;
        int New = std::max(old + 1, a[i]);
        if(New > a[i] + d) {
          ok = 0;
          break;
        }
        st.insert(New);
        st.erase(it);
      }
      else {
        ok = 0;
        break;
      }
    }
    if(ok) {
      r = mid - 1;
      ans = mid;
    }
    else {
      l = mid + 1;
    }
  }
  std::cout << ans;
}

/**



**/
#Verdict Execution timeMemoryGrader output
Fetching results...