1. 题目源地址:http://acm.hdu.edu.cn/showproblem.php?pid=1861
2. 源代码:
//HOJ--1861:游船出租
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct node
{
int ID;//船号
char status;//租船或是还船状态
int H;//时钟
int M;//分钟
}boat[110];
int cmp(node a,node b)//排序函数
{
if(a.ID != b.ID)//优先按照游船ID排序
return a.ID < b.ID;
else if(a.H != b.H)//若ID相同,则按照时间排序
return a.H < b.H;
else if(a.M != b.M)
return a.M < b.M;
}
int main()
{
int num,time_H,time_M;
char s,ch;
int i,j;
while(cin>>num && num!=-1)
{
cin>>s>>time_H>>ch>>time_M;
if(num==0)
{
cout<<0<<" "<<0<<endl;
continue; //若num=0,则结束此次循环
}
boat[0].ID=num;
boat[0].status=s;
boat[0].H=time_H;
boat[0].M=time_M;
for(i=1; ;i++)
{
cin>>boat[i].ID>>boat[i].status>>boat[i].H>>ch>>boat[i].M;
if(boat[i].ID==0)
break;
}
sort(boat,boat+i,cmp);
float times;//船被租次数
float average;//被租平均时间
float sum;//记录租船总时间
times=0.0;
sum=0.0;
for(j=0;j<i-1;j++)
{
if(boat[j].ID == boat[j+1].ID && boat[j].status=='S' && boat[j+1].status=='E')
{
times++;
sum=sum+(boat[j+1].H*60+boat[j+1].M)-(boat[j].H*60+boat[j].M);
j++;
}
}
//cout<<sum<<" "<<times<<endl;
average=sum/times+0.5;//注意结果四舍五入到分钟
int ans=int(average);
cout<<times<<" "<<ans<<endl;
}
//system("pause");
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/163049.html