超大型LED显示屏

时间:2021-06-22 21:48:06

Description

超大型LED显示屏

Input

输入包含不超过100组数据。每组数据第一行为"START hh:mm:ss",表示比赛开始时刻为hh:mm:ss。最后一行为"END hh:mm:ss",即比赛结束时刻。二者之间至少会有一个SCORE信息,格式为"SCORE hh:mm:ss team score",其中team要么是"home"(主场)要么是"guest"(客场), score表示得分,为1,2或者3。这些信息保证按照时间从早到晚的顺序排列,且任意两条SCORE信息的时刻均不相同。比赛开始时间不会早于9:00,结束时间不会晚于同一天的21:00。注意,如果比赛开始时间为09:00:00,结束时间为09:00:01,比赛长度为1秒钟,而不是2秒钟。

Output

对于每组数据,输出测试点编号和总耗电量。

Sample Input

START 09:00:00
SCORE 09:01:05 home 2
SCORE 09:10:07 guest 3
END 09:15:00
START 09:00:00
SCORE 10:00:00 home 1
SCORE 11:00:00 home 1
SCORE 12:00:00 home 1
SCORE 13:00:00 home 1
SCORE 14:00:00 home 1
SCORE 15:00:00 home 1
SCORE 16:00:00 home 1
SCORE 17:00:00 home 1
SCORE 18:00:00 home 1
SCORE 19:00:00 home 1
SCORE 20:00:00 home 1
END 21:00:00

Sample Output

Case 1: 9672
Case 2: 478800
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

#define MAX(a,b) ((a)>(b) ? (a):(b))
#define MIN(a,b) ((a)<(b) ? (a):(b))

int main()
{
	long long a[10]={6,2,5,5,4,5,6,3,7,6},x,y,z,sum1,sum2,c1,c2,now1,now2,now11,now22,first,c,cas=0,t1,t2,c11,c22;
	char s[10];
	
	while(scanf("%s %lld:%lld:%lld",s,&x,&y,&z)!=EOF)
	{
		c1=0; c2=0; sum1=0; sum2=0; now1=now2=x*3600+y*60+z; first=1;
		
		while(first==1)
		{
			scanf("%s",s);
			
			if(strcmp(s,"SCORE")==0)
			{
				scanf("%lld:%lld:%lld %s %lld",&x,&y,&z,s,&c);
				
				if(strcmp(s,"home")==0)
				{
					now11=x*3600+y*60+z;
					c11=c1; t1=0;
					while(c11!=0)
					{
						t1+=a[c11%10];
						c11/=10;
					}
					if(c1==0) t1=a[0];
				    sum1+=(now11-now1)*t1;
				    now1=now11;
					c1+=c;
				}
				else
				{
					now22=x*3600+y*60+z;
					c22=c2; t2=0;
					while(c22!=0)
					{
						t2+=a[c22%10];
						c22/=10;
					}
					if(c2==0) t2=a[0];
				    sum2+=(now22-now2)*t2;
				    now2=now22;
					c2+=c;
				}
			}
			else
			{
				scanf("%lld:%lld:%lld",&x,&y,&z);
				
				now11=x*3600+y*60+z;
				c11=c1; t1=0;
				while(c11!=0)
				{
					t1+=a[c11%10];
					c11/=10;
				}
				if(c1==0) t1=a[0];
				sum1+=(now11-now1)*t1;
				now22=x*3600+y*60+z;
				c22=c2; t2=0;
				while(c22!=0)
				{
					t2+=a[c22%10];
					c22/=10;
				}
				if(c2==0) t2=a[0];
				sum2+=(now22-now2)*t2;
				break;
			}
		}
		printf("Case %lld: %lld\n",++cas,sum1+sum2);
	}
	return 0;
}