Cod sursa(job #3349429)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 29 martie 2026 10:48:49
Problema Pavare2 Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 0.91 kb
lim=[0, 0]
with open("pavare2.in", "r") as f:
	N, lim[0], lim[1]=[int(x) for x in f.readline().strip().split()]
	K=[int(x) for x in f.readline().strip().split()][0]

dp=[[[0]*lim[i] for _ in range(N)] for i in range(2)]
dp[0][-1][0]=dp[1][-1][0]=1

for i in range(N-2, -1, -1):
	for k in range(2):
		dp[k][i][0]=sum(dp[1-k][i+1])
		for j in range(1, lim[k]):
			dp[k][i][j]=dp[k][i+1][j-1]

#  for k in range(2):
	#  for i in range(N):
		#  for j in range(lim[k]):
			#  print(f"dp[{k}][{i}][{j}]={dp[k][i][j]}")

ans=[f"{sum(dp[0][0])+sum(dp[1][0])}"]

start=[lim[0]-1, 0]
end=[-1, lim[1]]
step=[-1, 1]

i=0
if sum(dp[0][0])>=K:
	k=0
else:
	K-=sum(dp[0][0])
	k=1

sol=[]
while i<N:
	for j in range(start[k], end[k], step[k]):
		if dp[k][i][j]>=K:
			break
		K-=dp[k][i][j]

	while j>-1:
		sol.append(chr(k+ord('0')))
		j-=1
		i+=1
	k=1-k
ans.append(''.join(sol))

with open("pavare2.out", "w") as g:
	g.writelines("\n".join(ans))