# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
471927 | zorz | Job Scheduling (CEOI12_jobs) | C++14 | 488 ms | 20936 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define MOD 1000000007
#define vi vector<int>
#define pi pair<int, int>
pi a[1000005];
vector<int> last, last_cpy;
int main()
{
//freopen("CEOI12_JOBS.in", "r", stdin);
//freopen("CEOI12_JOBS.out", "w", stdout);
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
LL n, d, m;
cin >> n >> d >> m;
for (int i = 0; i < m; ++i)
{
cin >> a[i].first;
a[i].second = i + 1;
}
sort(a, a + m);
LL l = 1, r = 1E6, mid;
while (l != r)
{
mid = (l + r) / 2;
// cout << mid << endl;
LL i = 0;
bool flag = true;
while (i < m && flag)
{
for (int j = 1; j <= mid; ++j)
{
if (i == m) break;
if (i >= mid) last.pb(max(last[i - mid] + 1, a[i].first));
else last.pb(a[i].first);
LL delay = last[i] - a[i].first;
if (delay > d)
{
flag = false;
break;
}
//cout << i << " " << last[i] << endl;
i++;
}
}
if (flag)
{
r = mid;
last_cpy = last;
}
else l = mid + 1;
last.clear();
}
cout << l << endl;
LL j = 0;
for (int i = 1; i <= n; ++i)
{
while (last_cpy[j] == i)
{
cout << a[j].second << " ";
j++;
}
cout << 0 << endl;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |