Submission #987420

#TimeUsernameProblemLanguageResultExecution timeMemory
987420OAleksaJob Scheduling (CEOI12_jobs)C++14
0 / 100
1066 ms50944 KiB
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int tt = 1;
  //cin >> tt;
  while (tt--) {
  	int n, d, m;
  	cin >> n >> d >> m;
  	pair<int, int> a[m + 1];
  	for (int i = 1;i <= m;i++) {
  		cin >> a[i].f;
  		a[i].s = i;
  	}
  	sort(a + 1, a + m + 1);
  	int l = 1, r = m, ans = 0;
  	auto check = [&](int mid) {
  		int t = 0, s = 1;
  		for (int i = 1;i <= m;i++) {
  			t += 1;
  			if (t > mid) {
  				s += 1;
  				t = 1;
  			}	
  			if (s < a[i].f) {
  				s = a[i].f;
  				t = 1;
  			}
  			if (a[i].f + d < s)
  				return false;
  		}
  		return true;
  	};
  	while (l <= r) {
  		int mid = (l + r) / 2;
  		if (check(mid)) {
  			ans = mid;
  			r = mid - 1;
  		}
  		else 
  			l = mid + 1;
  	}
  	cout << ans << '\n';
  	for (int i = 1;i <= n;i++) {
  		if (i > n - d) {
  			cout << 0 << '\n';
  			continue;
  		}
  		for (int j = 1;j <= ans + 1;j++)
  			cout << 0 << ' ';
  		cout << '\n';
  	}
  }
  return 0; 
}
#Verdict Execution timeMemoryGrader output
Fetching results...