#P10941. [ICPC-Tehran 2000] Cashier Employment

[ICPC-Tehran 2000] Cashier Employment

Description

德黑兰的一家超市每天都营业 2424 小时,需要一些收银员来满足需求。超市经理雇佣了你来帮助他解决他的问题。问题是,这个超市在不同时间需要不同数量的收银员(比如,午夜的时候需要较少的收银员,而在正午时分需要很多)来给他的客户提供很好的服务,并且他需要雇佣尽量少的收银员。

经理给你提供了对于一天中每个小时所需要的最少的收银员数量。数据由 2424 个整数 R(0),R(1),,R(23)R(0),R(1),\dots,R(23) 表示:R(0)R(0) 代表从午夜到凌晨 1:001:00 需要的最少收银员数量,R(1)R(1) 表示从 1:001:002:002:00 所需要的,以此类推。注意这些数字在每一天都是相同的。这个工作有 NN 个合格的申请者,第 ii 个申请者每天从约定的时间 tit_i(代表 ti:00t_i:00 时刻,0ti230 \le t_i \le 23)开始每天连续不间断地工作 88 小时。收银员不会代替别人工作,并且会严格按照计划执行,并且有足够的收银机和柜台供他们使用。

你需要写一个程序,对于所有 i=023i=0\dots 23 输入 R(i)R(i) 并且对于所有 i=1Ni=1\dots N 输入 tit_i(都是非负整数),计算满足上述条件所需要的所需要雇佣的最少收银员数量。注意,实际上在某一时刻在工作的收银员数量可能超过限制条件,此时也是合法的。

Input Format

输入的第一行是这个题目的测试用例数量(最多 2020)。每个测试的第一行有 2424 个数字,分别代表 R(0),R(1),,R(23)R(0),R(1),\dots,R(23)R(i)R(i) 最多 100100)。第二行有一个数字 NN0N10000 \le N \le 1000),即应聘者数量。之后的 NN 行,第 ii 行代表 tit_i0ti230 \le t_i \le 23)。各组测试用例之间没有空行。

Output Format

对于每个测试用例,输出一行代表所需要雇佣的最少应聘者数量。

如果无解,输出 No Solution

1 
1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
5
0
23
22
1
10
1