#include "bits/stdc++.h"
using namespace std;
#define ll long long
int MOD = 1e9+7;
int INF = 1e9;
void solve() {
int n, d, m;
cin >> n >> d >> m;
vector<array<int, 2>> r(m);
for (int i = 0; i < m; i++) {
cin >> r[i][0];
r[i][1] = i;
}
sort(r.begin(), r.end());
int lo = 1, hi = m;
while (lo < hi) {
int mid = lo + (hi - lo) / 2;
int idx = 0;
bool ok = true;
for (int t = 1; t <= n; t++) {
int i = 0;
while (i < mid && idx + i < m) {
if (r[idx + i][0] > t) {
break;
}
if (r[idx + i][0] + d < t) {
ok = false;
goto outer;
}
i++;
}
idx += i;
if (idx >= m) {
break;
}
}
outer:;
if (ok) {
hi = mid;
} else {
lo = mid + 1;
}
}
cout << lo << '\n';
int idx = 0;
for (int t = 1; t <= n; t++) {
int i = 0;
while (i < lo && idx + i < m) {
if (r[idx + i][0] > t) {
break;
}
cout << r[idx + i][1] + 1 << ' ';
i++;
}
idx += i;
cout << "0\n";
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// freopen("input.in", "r", stdin);
// freopen("output.out", "w", stdout);
// int T = 1;
// cin >> T;
// while (T--) {
solve();
// }
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |