Submission #598445

#TimeUsernameProblemLanguageResultExecution timeMemory
598445stevancvJob Scheduling (CEOI12_jobs)C++14
60 / 100
260 ms24000 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define sp ' ' #define en '\n' #define smin(a, b) a = min(a, b) #define smax(a, b) a = max(a, b) using namespace std; const int N = 5e5 + 2; const int mod = 1e9 + 7; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, d, m; cin >> n >> d >> m; vector<pair<int, int>> a(m); for (int i = 0; i < m; i++) { cin >> a[i].first; a[i].first -= 1; a[i].second = i + 1; } vector<int> day(m); sort(a.begin(), a.end()); auto Can = [&] (int mid) { for (int i = 0; i < m; i++) day[i] = -1; int j = -1; for (int i = 0; i < n; i++) { int r = j; while (r < min(m - 1, j + mid) && a[r + 1].first <= i) r++; for (int o = j + 1; o <= r; o++) { day[o] = i; } j = r; } for (int i = 0; i < m; i++) { if (!(a[i].first <= day[i] && day[i] <= a[i].first + d)) return false; } return true; }; int l = 1; int r = n - 1; int ans = n; while (l <= r) { int mid = l + r >> 1; if (Can(mid)) { ans = mid; r = mid - 1; } else l = mid + 1; } Can(ans); cout << ans << en; vector<vector<int>> pos(n); for (int i = 0; i < m; i++) pos[day[i]].push_back(a[i].second); for (int i = 0; i < n; i++) { for (int u : pos[i]) cout << u << sp; assert(pos[i].size() <= ans); cout << 0 << en; } return 0; }

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:43:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   43 |         int mid = l + r >> 1;
      |                   ~~^~~
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from jobs.cpp:1:
jobs.cpp:56:30: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   56 |         assert(pos[i].size() <= ans);
      |                ~~~~~~~~~~~~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...