n, d, m = map(int, input().split())
a = list(map(int, input().split()))
b = []
for i in range(m):
b.append([a[i],i+1])
b.sort()
def solve(machines):
did = []
day = 0
ans = []
for i in range(0, m, machines):
day += 1
ans.append([])
jobs = b[i:min(m, i+machines)]
for job in jobs:
did.append(max(job[0], day)-job[0])
ans[-1].append(job[1])
ans[-1].append(0)
for i in did:
if i > d:
return False, ans
return True, ans
def first_true(lo, hi, f):
hi += 1
while lo < hi:
mid = (lo + hi) // 2
if f(mid)[0]:
hi = mid
else:
lo = mid + 1
return lo
machines = first_true(1, n, solve)
print(machines)
did = []
day = 0
ans = []
wrote = 0
for i in range(0, m, machines):
day += 1
ans = []
jobs = b[i:min(m, i+machines)]
for job in jobs:
did.append(max(job[0], day)-job[0])
ans.append(job[1])
print(*ans, end=" 0\n")
wrote+=1
for i in range(n-wrote):
print(0)
컴파일 시 표준 출력 (stdout) 메시지
Compiling 'jobs.py'...
=======
adding: __main__.pyc (deflated 36%)
=======
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |