#include<bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, d, m;
cin >> n >> d >> m;
vector<array<int, 2>>v(m);
for(int i = 0;i < m;++i){
cin >> v[i][0];
v[i][1] = i + 1;
}
sort(v.begin(), v.end());
int l = 1, r = m, ans = m;
while(l <= r){
int mid = (l + r) / 2;
bool f = true;
int p = 0, day = 1;
while(f && p < m){
int cur = p;
for(;p < min(m, cur + mid);++p){
if(v[p][0] > day)break;
if(v[p][0] + d < day)f = false;
}
day++;
}
if(f){
ans = mid;
r = mid - 1;
}
else{
l = mid + 1;
}
}
cout << ans << '\n';
int p = 0, day = 1;
vector<vector<int>>res(n + 1);
while(p < m){
int cur = p;
for(;p < min(m, cur + ans);++p){
if(v[p][0] > day)break;
res[day].push_back(v[p][1]);
}
day++;
}
for(int i = 1;i <= n;++i){
res[i].push_back(0);
for(int j : res[i]){
cout << j << ' ';
}
cout << '\n';
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |