# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
498187 | arisja | Job Scheduling (CEOI12_jobs) | Cpython 3 | 1095 ms | 65540 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |