제출 #692515

#제출 시각아이디문제언어결과실행 시간메모리
692515SnowmanonahoeJob Scheduling (CEOI12_jobs)C++17
15 / 100
160 ms17688 KiB
#include <bits/stdc++.h>
using namespace std;
struct day {
	vector<int> reqs;
	int due = 0;
};
vector<day> days;
int N;
bool check(int num) {
	int jobs = 0, done = 0;
	for (int i = 1; i <= N; i++) {
		jobs = max(0, jobs + static_cast<int>(days[i].reqs.size()) - num);
		done += num - days[i].due;
		if (done < 0)
			return false;
	}
	return true;
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	int D, M;
	cin >> N >> D >> M;
	days.resize(N+1);
	for (int i = 1; i <= M; i++) {
		int req;
		cin >> req;
		days[req].reqs.push_back(i);
		days[req + D].due++;	
	}
	int l = 1, r = 1e+6;
	while (l < r) {
		int mid = l + (r - l) / 2;
		if (check(mid))
			r = mid;
		else
			l = mid + 1;
	}
	cout << l << '\n';
	queue<int> jobs;
	for (int i = 1; i <= N; i++) {
		for (const auto& i : days[i].reqs)
			jobs.push(i);
		for (int i = 0; i < l && !jobs.empty(); i++) {
			cout << jobs.front() << ' ';
			jobs.pop();
		}
		cout << "0\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...