Submission #1084308

#TimeUsernameProblemLanguageResultExecution timeMemory
10843084QT0RJob Scheduling (CEOI12_jobs)C++17
0 / 100
60 ms14160 KiB
#include <bits/stdc++.h>
using namespace std;

int zle[100003];
int wej[1000003];
vector<int> ans[100003];

deque<pair<int,int>> dq;
queue<int> q;

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	int n,d,m;
	cin >> n >> d >> m;
	for (int i = 1; i<=m; i++){
		cin >> wej[i];
		zle[wej[i]]++;
		ans[wej[i]].push_back(i);
	}
	int l=1,p=m,md;
	while(l<p){
		md=(l+p)/2;
		bool ok=true;
		for (int i = 1; i<=n; i++){
			dq.push_back({zle[i],i});
			int lft=md;
			while(dq.size() && lft){
				auto [z,ind] = dq.front();
				dq.pop_front();
				if (lft>=z){
					lft-=z;
					z=0;
				}
				else{
					z-=lft;
					lft=0;
					dq.push_front({z,ind});
				}
			}
			if (dq.size() && dq.front().second+d<=i){
				ok=false;
				dq.clear();
				break;
			}
		}
		if (dq.size())ok=false;
		dq.clear();
		if (ok)p=md;
		else l=md+1;
	}
	cout << l << '\n';
	// for (int i = 1; i<=n; i++){
	// 	for (auto u : ans[i])q.push(u);
	// 	for (int j = 1; j<=l; j++){
	// 		if (q.empty())break;
	// 		cout << q.front() << ' ';
	// 		q.pop();
	// 	}
	// 	cout << "0\n";
	// }
}
#Verdict Execution timeMemoryGrader output
Fetching results...