#include <bits/stdc++.h>
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int N, D, M;
std::cin >> N >> D >> M;
std::vector<std::vector<int>> a(M, std::vector<int>(2));
for (int i = 0; i < M; ++i) {
std::cin >> a[i][0];
a[i][1] = i + 1;
}
sort(a.begin(), a.end());
int lo = 1, hi = M;
while (lo < hi) {
int mi = (lo + hi) / 2;
bool ok = true;
for (int i = 1, j = 0; i <= N && ok; ++i) {
int tot = 0;
while (tot < mi && j < M && ok) {
if (a[j][0] + D < i)
ok = false;
else if (i >= a[j][0]) {
tot++;
j++;
}
else {
break;
}
}
}
if (ok)
hi = mi;
else
lo = mi + 1;
}
std::cout << lo << "\n";
int task = 0;
for (int i = 1; i <= N; ++i) {
int cur = 0;
while (task < M && i >= a[task][0] && i <= a[task][0] + D && cur < lo) {
std::cout << a[task][1] << " ";
task++, cur++;
}
std::cout << 0 << "\n";
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
35 ms |
6608 KB |
Output is correct |
2 |
Correct |
36 ms |
6596 KB |
Output is correct |
3 |
Correct |
34 ms |
6596 KB |
Output is correct |
4 |
Correct |
35 ms |
6596 KB |
Output is correct |
5 |
Correct |
35 ms |
6596 KB |
Output is correct |
6 |
Correct |
35 ms |
6608 KB |
Output is correct |
7 |
Correct |
36 ms |
6736 KB |
Output is correct |
8 |
Correct |
36 ms |
6600 KB |
Output is correct |
9 |
Correct |
61 ms |
6816 KB |
Output is correct |
10 |
Correct |
64 ms |
6808 KB |
Output is correct |
11 |
Correct |
51 ms |
6724 KB |
Output is correct |
12 |
Correct |
152 ms |
13308 KB |
Output is correct |
13 |
Correct |
272 ms |
19288 KB |
Output is correct |
14 |
Correct |
374 ms |
25600 KB |
Output is correct |
15 |
Correct |
477 ms |
31820 KB |
Output is correct |
16 |
Runtime error |
594 ms |
38340 KB |
Memory limit exceeded |
17 |
Runtime error |
709 ms |
44224 KB |
Memory limit exceeded |
18 |
Runtime error |
839 ms |
50452 KB |
Memory limit exceeded |
19 |
Runtime error |
984 ms |
56900 KB |
Memory limit exceeded |
20 |
Runtime error |
729 ms |
44232 KB |
Memory limit exceeded |