题目
题目大意
一个银行有n个窗口,每个窗口最多站m个人,其余人在黄线外等候。假设k个人同时进入银行按先后次序排队,每个人都有相应的服务时间。每个顾客都选择最短队列站,如果有多个相同长度的队列,按序号小的站。给出要查询的人的序号,要求输出该人结束服务的时间。如果顾客开始服务的时间晚于17:00,则输出Sorry。
思路
银行排队问题,根据题目模拟。先考虑数据结构,根据题目很容易想出队列,这里我直接用m行n列的二维数组来表示黄线内的位置,后续模拟先进先出的操作,也可以用vector<queue>来表示。
然后考虑计算方法,黄线内和黄线外的人选择位置的算法是不一样的。黄线内的人不需要等待,一个萝卜一个坑地按序就座。但黄线外的人由于前面的位置已满,需要等某一个人出来再站空位置上。怎么知道哪个窗口的人先出来,就要看每一个队列中第一个人服务完成需要的时间。
找到首元素时间最小的那个队列,假