https://www.acmicpc.net/contest/view/555
2020년 11월 28일 저녁 6시부터 3시간동안 진행된 알고리즘 프로그래밍 경시대회에 참여하였다.
N = int(input())
lst = list(map(int, input().split()))
cnt = 0
last_num = lst[0]
for idx, num in enumerate(lst):
if idx % 2 == num % 2:
print("NO")
break
else:
print("YES")
S = input()
num_of_zero = 0
for c in S:
if c == '0':
num_of_zero += 1
num_of_one = (len(S) - num_of_zero) // 2
num_of_zero //= 2
ans = ''
for c in S:
if c == '0':
if num_of_zero > 0:
num_of_zero -= 1
ans += '0'
elif c == '1':
if not num_of_one:
ans += '1'
else:
num_of_one -= 1
print(ans)
N, K = map(int, input().split())
lst = list(map(int, input().split()))
data = []
for idx, cnt in enumerate(lst):
data.append([cnt, str(idx + 1)])
data.sort(key=lambda x: -x[0])
if data[0][0] > N // 2 + N % 2:
print("-1")
else:
lst = []
for cnt, num in data:
lst += [num] * cnt
end = len(lst)
ans = []
for i in range(end):
if not i % 2:
ans.append(lst[i // 2])
else:
ans.append(lst[end - 1 - i // 2])
print(' '.join(ans))
N = int(input())
data = list(map(int, input().split()))
ans = 0
num = 1
for n in data:
num *= n
n %= (10 ** 9 + 7)
ans += num
num += 1
print(ans % (10 ** 9 + 7))
from collections import deque
N, M, A, B = map(int, input().split())
road = {}
magic = []
row = []
for i in range(M):
U, V, T = map(int, input().split())
if U in road:
road[U].add((V, i))
else:
road[U] = set()
road[U].add((V, i))
if V in road:
road[V].add((U, i))
else:
road[V] = set()
road[V].add((U, i))
row.append(T)
magic.append(row)
K = int(input())
for _ in range(K):
row = list(map(int, input().split()))
magic.append(row)
res = [[10**13] * (K+1) for _ in range(N+1)]
q = deque()
q.append((A, 0))
res[A][0] = 0
while q:
s, row = q.popleft()
for tu in road[s]:
e, i = tu
new = res[s][row] + magic[row][i]
if res[e][row] > new:
res[e][row] = new
q.append((e, row))
if row < K:
new = res[s][row] + magic[row + 1][i]
if res[e][row + 1] > new:
res[e][row + 1] = new
q.append((e, row + 1))
print(min(res[B]))