乘务员的难题
#描述#
坐飞机有时是件很惬意的事,比如飞机上有悠闲的喝茶时间。现在为了满足所有乘客的茶水需求,请你帮助飞机上的乘务员解决这个难题。
<BR>
飞机上有从1到n的n个座位,每行只有一个座位,假设所有的座位都是满的,也就是说有n个乘客按顺序对应这n个座位(即1号位上的叫乘客1)。
<BR>
乘务员执行着她的本分工作:为每一个乘客提供茶或者咖啡。她需要给所有在tea数组(大小为m,表示有m个乘客)中的乘客提供茶,而剩下的乘客都想喝咖啡。
<BR>
在飞机的所有位置前面有一台能提供茶或咖啡的机器,乘务员有一个能容纳最多7杯茶或者7杯咖啡的空水壶。假设乘务员最初在咖啡机旁边并且水壶是空的。
乘务员将执行以下几条规则:
<BR>
1:从机器走到座位1或者从座位1走到机器,每次1秒。
<BR>
2:从座位i(i > 1)走到座位i-1,每次花费1秒。
<BR>
3:从座位i(i < n)走到座位i+1,每次花费1秒。
<BR>
4:如果乘务员当前在座位i,且对应的乘客i未被提供过他想要的茶水,而乘务员的水壶里装的茶水恰好是他想要的,那么乘务员就会立刻给帮乘客i倒满茶水。每次倒水花费4秒。
<BR>
5:如果乘务员当前在机器旁,并且水壶是空的,那么她可以选择倒满咖啡或者倒满茶,每次倒咖啡或茶花费47秒。注意:她也可以不选择倒满(即可以选择少于7个乘客的量),但是花费的时间依然是47秒。
<BR>
现在的问题是,要满足所有乘客的条件,所花费的时间最少是多少呢?
#格式#
##输入格式##
有多组数据,每组数据第一行是乘客个数n(n<=1000)以及需要茶的乘客数m,接下来一行有m(1<=m<=47)个数,表示需要茶的乘客的座位号。
##输出格式##
每组数据对应输出一行,即满足所有乘客的条件所花费的最少时间。
#样例1#
##样例输入1##
2 1
1
2 2
2 1
##样例输出1##
108
59
#限制#
1000ms
32768KB
#提示#
#来源#
LCS