제출 #498187

#제출 시각아이디문제언어결과실행 시간메모리
498187arisjaJob Scheduling (CEOI12_jobs)Cpython 3
0 / 100
1095 ms65540 KiB
def f(ar, x, n, d, m):
    st = []
    new_req = 0
    for i in range(1, n + 1):
        st.append([])
        for j in range(x):
            if ar[new_req][0] > i:
                break
            if new_req + d >= i:
                #st += str(ar[new_req][1]) + ' '
                st[i-1].append(ar[new_req][1])
                new_req += 1
            else:
                return False, st
            if new_req == m:
                return True, st
    return False, st
            


def lower_bound(ar):
    global stor1
    l = 0
    r = len(ar)
    while r - l != 1:
        mid = (r + l) // 2
        stor = f(ar, mid, n, d, m)
        if stor[0]:
            r = mid
            stor1 = stor
        else:
            l = mid
    return r

stor1 =''
n, d, m = map(int, input().split())
ar = list(map(int, input().split()))
for i in range(m):
    ar[i] = [ar[i], i + 1]
ar.sort()
print(lower_bound(ar))
#print(stor1[1])
for i in range(n):
    if i >= len(stor1[1]):
        print('0')
    elif stor1[1][i] == []:
        print('0')
    else:
        print(" ".join(map(str, stor1[1][i])) + ' 0')
#Verdict Execution timeMemoryGrader output
Fetching results...