# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
708523 | jsathu07 | Job Scheduling (CEOI12_jobs) | C++14 | 274 ms | 17396 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;
using ll = long long int;
bool calc(int n, int d, int x, vector<int> &arr, int m)
{
int j = 0;
bool p = true;
for (int i = 0; i < n; i++)
{
int y = x;
while (y-- && j < m)
{
if (!(i + 1 <= arr[j] + d))
{
p = false;
break;
}
// cout << "day " << i + 1 << " processed " << j + 1 << " \n";
j++;
}
if (!p)
break;
}
return p;
}
void solve()
{
int n, d, m;
cin >> n >> d >> m;
vector<int> arr(m, 0);
vector<pair<int, int>> brr;
for (int i = 0; i < m; i++)
{
cin >> arr[i];
brr.push_back({arr[i], i + 1});
}
sort(brr.begin(), brr.end());
sort(arr.begin(), arr.end());
int l = 1, r = 1e15, ans = 1e6;
while (l <= r)
{
int mid = (l + r) / 2;
if (calc(n, d, mid, arr, m))
{
ans = mid;
r = mid - 1;
}
else
{
l = mid + 1;
}
}
cout << ans << "\n";
int k = 0, rem = 0;
for (auto &i : brr)
{
if (k == ans)
{
cout << 0 << "\n";
k = 0;
rem++;
}
cout << i.second << " ";
k++;
}
rem++;
cout << 0 << "\n";
int q = n - rem;
while (q > 0)
{
cout << 0 << "\n";
q--;
}
}
// void setIO(string s)
// {
// freopen((s + ".in").c_str(), "r", stdin);
// freopen((s + ".out").c_str(), "w", stdout);
// }
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
solve();
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |