Submission #1250829

#TimeUsernameProblemLanguageResultExecution timeMemory
1250829caterpillowJob Scheduling (CEOI12_jobs)Pypy 3
0 / 100
1100 ms131072 KiB
from queue import Queue

def check(mid):
    todo = Queue()
    j = 0
    sol = [[] for i in range(n)]
    for i in range(n):
        while j < m and reqs[ord[j]] == i:
            todo.put(ord[j])
            j += 1
        for k in range(mid):
            if todo.empty():
                break
            if i - reqs[todo.queue[0]] > d:
                return []
            sol[i].append(todo.queue[0])
            todo.get()
    if not todo.empty():
        return []
    return sol

n, d, m = map(int, input().split())
reqs = list(map(int, input().split()))
for i in range(m):
    reqs[i] -= 1
ord = [i for i in range(m)]
ord.sort(key = lambda x: reqs[x])

lo, hi = 0, m
while hi - lo > 1:
    mid = (lo + hi) // 2
    if len(check(mid)):
        hi = mid
    else:
        lo = mid
print(hi)
sol = check(hi)
for i in range(n):
    for j in sol[i]:
        print(j + 1, end=' ')
    print(0)

Compilation message (stdout)

Compiling 'jobs.py'...

=======
  adding: __main__.pyc (deflated 40%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...