【PAT】1017. Queueing at Bank (25)

来源:互联网 发布:淘宝转化率0.05算正常 编辑:程序博客网 时间:2024/05/16 19:32

有三组数据过不了,暂记于此


#include<iostream>#include<vector>#include<queue>#include<algorithm>#include<string.h>using namespace std;struct node{int h;int m;int s;int wait;int end;int process;double total;};struct record{int win; //窗口号float endTime; record(){win = -1; endTime = 28800.0;}};bool cmp(node a,node b){return a.total < b.total;}bool cmp2(record a,record b){return a.endTime < b.endTime;}int main(){int cousNum; //顾客数int winNum; //窗口数cin>>cousNum>>winNum;int i;node t;vector<node> vec;for(i=0; i<cousNum; i++){scanf("%d:%d:%d %d",&t.h,&t.m,&t.s,&t.process);t.total = t.h*3600 + t.m*60 + t.s;vec.push_back(t);}/*cout<<endl;for(i=0; i<vec.size(); i++){printf("%d %d %d  %d",vec[i].h,vec[i].m,vec[i].s,vec[i].process,vec[i].total);cout<<endl;}*/sort(vec.begin(),vec.end(),cmp);vector<record> rec(winNum);queue<node> *que = new queue<node>[winNum];int winBusy = 0;//正在办理业务的窗口数int j;double sum = 0.0;int count = 0;for(i=0; i<cousNum; i++){if(vec[i].total > 17*3600 ) {count++;continue;}sort(rec.begin(),rec.end(),cmp2); //找出空闲窗口vec[i].wait =rec[0].endTime - vec[i].total;if(vec[i].wait <= 0) vec[i].wait = 0; //无需等待rec[0].endTime  += vec[i].process*60;//cout<<"vec["<<i<<"]:"<<vec[i].h<<" "<<vec[i].m<<" "<<vec[i].s<<" "<<vec[i].process<<" "<<vec[i].wait<<endl;sum += vec[i].wait;}printf("%.1lf\n",sum/(cousNum-count)/60.0);return 0;}


原创粉丝点击