# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
743325 | vjudge1 | Job Scheduling (CEOI12_jobs) | C++17 | 15 ms | 1644 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 1;
const int M = 1e6 + 1;
int dp[N] , arr[M] , pre[N];
int n,m,d;
bool solve(int mid) {
for(int i=1;i<=n;i++) dp[i] = 0, pre[i] = i;
for(int i=1;i<=m;i++) dp[arr[i]]++;
for(int i=1;i<=m;i++) {
if (dp[i] > mid) {
if ((i+1)-pre[i] > d) return false;
pre[i+1] = pre[i];
dp[i+1] += dp[i] - mid;
}
}
return dp[m+1]==0;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> m >> d >> n;
for(int i=1;i<=m;i++) cin >> arr[i];
int l = 1 , r = N;
while (l < r) {
int mid = (l + r) / 2;
if (solve(mid)) r = mid;
else l = mid + 1;
}
cout << l << '\n';
for(int i=1;i<=n;i++) cout << "0\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |