#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,d,m;
cin>>n>>d>>m;
vector<array<int, 2>> arr(m);
int i = 0;
for(auto &[x, v] : arr) {
cin>>x;
v=++i;
}
sort(arr.begin(),arr.end());
int lo = 0;
int hi = m + 1;
vector<vector<int>> answer;
while (lo < hi) {
int mid = lo + (hi - lo) / 2;
int job = 0;
bool valid = true;
vector<vector<int>> schedule(n + 1);
for (int day = 1; day <= n; ++day) {
int tasks = 0;
while (job < m && arr[job][0] <= day && tasks < mid) {
if (day > arr[job][0] + d) {
valid = false;
break;
}
schedule[day].push_back(arr[job][1]);
++tasks;
++job;
}
if (!valid) {
break;
}
}
if (valid) {
hi = mid;
swap(schedule, answer);
} else {
lo = mid + 1;
}
}
cout << lo << "\n";
for (int day = 1; day <= n; ++day) {
auto const &row = answer[day];
auto first = begin(row);
auto last = end(row);
for (; first != last; ++first)
cout << *first << " ";
cout << "0\n";
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |