제출 #63346

#제출 시각아이디문제언어결과실행 시간메모리
63346bazsi700Job Scheduling (CEOI12_jobs)C++14
100 / 100
448 ms13740 KiB
#include <bits/stdc++.h>
using namespace std;

#define MOD 1000000007
#define ll long long int
#define vi vector<int>
#define vii vector< vector<int> >
#define PI 3.1415926535897932384626433832795
#define INF 9223372036854775807LL

//15:55 -1 óra? fél?

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	int n,d,m;
	cin >> n >> d >> m;
	vii jobs(n+1,vi());
	for(int i = 0; i < m; i++) {
		int x;
		cin >> x;
		jobs[x].push_back(i+1);
	}
	int l = 1;
	int r = m;
	while(l < r) {
		int mid = (l+r)/2;
		queue<int> todo;
		bool good = true;
		for(int i = 1; i <= n; i++) {
			for(int j = 0; j < jobs[i].size(); j++) {
				todo.push(i);
			}
			for(int j = 0; j < mid; j++) {
				if(todo.empty()) {
					break;
				}
				int day = todo.front();
				todo.pop();
				if(day+d < i) {
					good = false;
					break;
				}
			}
			if(!good) {
				break;
			}
		}
		if(good) {
			r = mid;
		} else {
			l = mid+1;
		}
	}
	cout << l << "\n";
	queue<int> todo;
	for(int i = 1; i <= n; i++) {
		for(int j = 0; j < jobs[i].size(); j++) {
			todo.push(jobs[i][j]);
		}
		for(int j = 0; j < l; j++) {
			if(todo.empty()) {
				break;
			}
			int id = todo.front();
			todo.pop();
			cout << id << " ";
		}
		cout << "0\n";
	}
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

jobs.cpp: In function 'int main()':
jobs.cpp:31:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int j = 0; j < jobs[i].size(); j++) {
                   ~~^~~~~~~~~~~~~~~~
jobs.cpp:58:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0; j < jobs[i].size(); j++) {
                  ~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...