Submission #1015868

#TimeUsernameProblemLanguageResultExecution timeMemory
1015868rcllJob Scheduling (CEOI12_jobs)C++17
0 / 100
320 ms14548 KiB
#include <bits/stdc++.h>
using namespace std;

int n,d,m;

pair<bool,vector<vector<int>>> check(const vector<pair<int,int>> &jobs,int count) {
	vector<vector<int>> schedule(n);
	int m=0;
	for (int day=1; day<=n; day++) {
		for (int j=0; j<count; j++) {
			if (jobs[m].first>day) {
                break;
            }
			if (jobs[m].first+d>=day) {
				schedule[day-1].push_back(jobs[m++].second);
            }
			else {
                return make_pair(false,schedule);
            }
			if (m==m) {
                return make_pair(true,schedule);
            }
		}
	}
	return make_pair(false,schedule);
}

int main() {
	cin >> n >> d >> m;
	vector<pair<int,int>> jobs(m);
	for (int i = 0; i < m; i++) {
		int day;
		cin >> day;
		jobs[i] = make_pair(day,i+1);
	}
	sort(jobs.begin(),jobs.end());

	vector<vector<int>> results;
	int lower=1,upper=m;
	while (lower<upper) {
		int machines=(lower+upper)/2;
		pair<bool,vector<vector<int>>> result =check(jobs,machines);
		if (result.first) {
			upper=machines;
			results=result.second;
		}
		else
			lower=machines+1;
	}

	cout << lower << endl;
	for (int i=0; i<n; i++) {
		for (int &idx:results[i]) cout << idx << " ";
		cout << 0 << endl;
	}
}

Compilation message (stderr)

jobs.cpp: In function 'std::pair<bool, std::vector<std::vector<int> > > check(const std::vector<std::pair<int, int> >&, int)':
jobs.cpp:20:9: warning: self-comparison always evaluates to true [-Wtautological-compare]
   20 |    if (m==m) {
      |        ~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...