제출 #525917

#제출 시각아이디문제언어결과실행 시간메모리
525917pawnedJob Scheduling (CEOI12_jobs)C++17
0 / 100
429 ms4400 KiB
#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define pb push_back
typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;

int N, D, M;	// days, max delay, reqs
int numbers[1000050];

bool check(int n) {	// checks if n machines is enough
	int needed[N] = {0};
	for (int i = 0; i < M; i++) {	// finds earliest possible time for each
		int day = numbers[i];
		while (needed[day] == n)
			day++;
		if (day - numbers[i] > D)
			return false;
		needed[day]++;
	}
	return true;
}

int main() {
	cin>>N>>D>>M;
	for (int i = 0; i < M; i++) {
		cin>>numbers[i];
	}
	sort(numbers, numbers + M);
	int low = 0;
	int high = 1e9;
	int ans = -1;
	while (low <= high) {	// false, false, false, true, true, true
		int mid = (low + high) / 2;
		if (check(mid)) {
			ans = mid;
			high = mid - 1;
		}
		else {
			low = mid + 1;
		}
	}
	cout<<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...