#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, d, m;
cin >> n >> d >> m;
vector<pair<int, int>> a(m);
for (int i = 0; i < m; i++) {
int x;
cin >> x;
a[i] = {x, i};
}
sort(a.begin(), a.end());
auto check = [&](int k) {
int beg = 0;
while (beg < n) {
for (int end = beg; end < min(n, beg + k); end++) {
if (beg / k + 1 - a[end].first > d) {
return 0;
}
}
beg += k;
}
return 1;
};
int lo = 1, hi = n;
while (lo <= hi) {
int mid = (lo + hi) >> 1;
if (check(mid)) {
hi = mid - 1;
} else {
lo = mid + 1;
}
}
cout << hi + 1 << '\n';
vector<int> ans;
int cnt = 0;
for (int i = 0; i < n; i++) {
ans.push_back(a[i].second + 1);
if ((i + 1) % (hi + 1) == 0) {
ans.push_back(0);
cnt += 1;
}
}
while (cnt <= n) {
cnt += 1;
ans.push_back(0);
}
for (int i = 0; i < int(ans.size()); i++) {
cout << ans[i] << ' ';
if (ans[i] == 0) {
cout << '\n';
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |