历年题解 CCF CSP历年题解(python)
样例输入:
4
2 5 4 2
题目链接:201609-2火车购票
问题分析: 建立一个520的车厢列表car,和包含每排剩下座位数的201的列表h,遍历输入,找能坐在一起的座位(输入小于等于剩下座位数),找不到则从1开头的空座排着坐
满分例程:
n=int(input())
peo=map(int,input().split())
car=[]#车厢座位
h=[]#每排剩下的座位数
for i in range(100):
car+=[0]
for i in range(20):
h+=[5]
for i in peo:
bl = False
for j in range(20):#遍历行
if h[j]>=i:#找能坐在一起的座位
for k in range(i):
car[5*j+5-h[j]+k]=5*(j)+5-h[j]+k+1
if k==0:
print(car[5*j+5-h[j]+k],end='')
else:
print('',car[5*j+5-h[j]+k],end='')
h[j]-=i
bl=True
break
if bl==False:#没有坐在一起的座位,空位排着坐
m=0
for j in range(100):
if car[j]==0:
car[j]=j+1
i-=1
if m==0:
print(car[j],end='')
else:
print('',car[j],end='')
m+=1
if i==0:
break
print()