#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1e6 + 5;
vector<int> day[maxn];
int n, d, m;
bool ok(int mid){
queue<int> q;
for(int i = 1; i <= n; i++){
if(q.size() && q.front() < i - d) return false;
for(int x: day[i]) q.push(x);
for(int j = 0; j < mid && q.size(); j++) q.pop();
}
return true;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n >> d >> m;
for(int i = 1; i <= m; i++){
int x; cin >> x;
day[x].push_back(i);
}
int l = 1, r = m, ans = -1;
while(l <= r){
int mid = (l + r) / 2;
if(ok(mid)){
ans = mid;
r = mid - 1;
}
else l = mid + 1;
}
cout << ans << "\n";
queue<int> q;
for(int i = 1; i <= n; i++){
for(int x: day[i]) q.push(x);
for(int j = 0; j < ans && q.size(); j++){
cout << q.front() << " ";
q.pop();
}
cout << 0 << "\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |