HDU--1861:游船出租

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值