#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int mp[30];
struct node
{
char id[50];
int month,dd,hh,mm;
bool flag;//0表示on 1表示off
}T[1005];
bool cmp(node a,node b)
{
if( strcmp(a.id,b.id)!=0 )
return strcmp(a.id,b.id)<0;
else if(a.dd!=b.dd)
return a.dd < b.dd;
else if(a.hh!=b.hh)
return a.hh < b.hh;
else if(a.mm!=b.mm)
return a.mm < b.mm;
}
int A1(node a,node b)//时间差
{
int time=0;
while(a.dd<b.dd || a.hh<b.hh || a.mm<b.mm )
{
a.mm++;
if(a.mm==60)
{
a.mm=0;
a.hh++;
}
if(a.hh==24)
{
a.hh=0;
a.dd++;
}
time++;
}
return time;
}
int A2(node a,node b)//钱差
{
int cost=0;
while(a.dd<b.dd || a.hh<b.hh || a.mm<b.mm )
{
cost+=mp[a.hh];
a.mm++;
if(a.mm==60)
{
a.mm=0;
a.hh++;
}
if(a.hh==24)
{
a.hh=0;
a.dd++;
}
}
return cost;
}
int main()
{
//freopen("in.txt","r",stdin);
for(int i=0;i<24;i++)
scanf("%d",&mp[i]);
int N;
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%s %d:%d:%d:%d",T[i].id,&T[i].month,&T[i].dd,&T[i].hh,&T[i].mm);
char tstr[20];
scanf("%s",tstr);
if(strcmp(tstr,"on-line")==0)
T[i].flag=0;
else
T[i].flag=1;
}
sort(T,T+N,cmp);
int flag=0;
int money=0;
for(int i=0;i<N-1;i++)
{
if(strcmp(T[i].id,T[i+1].id)==0 && T[i].flag==0&&T[i+1].flag==1)//上下id相同且配对成功
{
if(flag==0)//该用户是否第一次配对成功
{
printf("%s %02d\n",T[i].id,T[i].month);
flag=1;
}
printf("%02d:%02d:%02d %02d:%02d:%02d %d $%.2f\n",T[i].dd,T[i].hh,T[i].mm,T[i+1].dd,T[i+1].hh,T[i+1].mm,A1(T[i],T[i+1]),A2(T[i],T[i+1])/100.0);
money+=A2(T[i],T[i+1]);
}
else if(strcmp(T[i].id,T[i+1].id)!=0)//上下id不同
{
if(money!=0)//释放上个用户money
{
printf("Total amount: $%.2f\n",money/100.0);
money=0;
flag=0;
}
}
}
if(money!=0)//补上最后一个用户
{
printf("Total amount: $%.2f\n",money/100.0);
}
/*
for(int i=0;i<N;i++)
{
printf("%s %02d:%02d:%02d:%02d %d\n",T[i].id,T[i].month,T[i].dd,T[i].hh,T[i].mm,T[i].flag);
}
*/
return 0;
}
1016. Phone Bills (25)
最新推荐文章于 2024-07-22 16:48:53 发布