时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 输入格式 输入的第一行包含一个整数n,表示购票指令的数量。 输出格式 输出n行,每行对应一条指令的处理结果。 样例输入 4 样例输出 1 2 样例说明 1) 购2张票,得到座位1、2。 评测用例规模与约定 对于所有评测用例,1 ≤ n ≤ 100,所有购票数量之和不超过100。 |
很好拿90分的模拟题,二维数组多开两列一个记录该行剩余座位,一个记录最后一个座位的位置,写起来会方便得多。但是想拿满分就得好好读题了,最后没有连续座位以后,要挑零碎的座位从小到大坐,emmm
while True:
try:
b= [[]for i in range(21)]
zuo = [[0 for _ in b]for i in b]
n = int(input())
p=list(map(int,input().split()))
#p = [int(v) for v in input().split()]
for i in range(1,21):
zuo[i][6]=5
zuo[i][7]=0
for i in range(n):
flag=0
for j in range(1,21):
if zuo[j][6]>=p[i]:
flag=1
for k in range(zuo[j][7]+1+5*(j-1),zuo[j][7]+1+5*(j-1)+p[i]-1):
print(k,end=' ')
print(zuo[j][7]+1+5*(j-1)+p[i]-1)
zuo[j][7]+=p[i]
zuo[j][6]-=p[i]
break
if not flag:
for j in range(1,21):
tmp = p[i]
last= zuo[j][6]
while tmp>0 and last>0:
print(zuo[j][7]+1+5*(j-1),end=' ')
last-=1
tmp-=1
zuo[j][6]=last
zuo[j][7]+=1
if tmp==0:
break
print()
except:
break