输入包含不超过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秒钟。
对于每组数据,输出测试点编号和总耗电量。
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
Case 1: 9672 Case 2: 478800
想法:
水题
代码:
#include<stdio.h> #include<string.h> char w[20]; int home[1010]; int guest[1010]; int time[1010]; int val[10]={6,2,5,5,4,5,6,3,7,6}; struct node { int h; int m; int s; }sec[1010]; int main() { int count=0; int yy=1; while(scanf("%s %d:%d:%d",w,&sec[count].h,&sec[count].m,&sec[count].s)!=EOF) { count++; int count1=1,count2=1; while(scanf("%s %d:%d:%d",w,&sec[count].h,&sec[count].m,&sec[count].s)) { //printf("%d %d %d\n",sec[count].h,sec[count].m,sec[count].s); if(strcmp(w,"SCORE")==0) { char d[20];int xx; scanf("%s %d",d,&xx); if(strcmp(d,"home")==0) { home[count1]=home[count1-1]+xx; } else { home[count1]=home[count1-1]; } if(strcmp(d,"guest")==0) { guest[count2]=guest[count2-1]+xx; } else { guest[count2]=guest[count2-1]; } count1++; count2++; } if(strcmp(w,"END")==0) { count++; break; } count++; } int i,j; /*for(i=0;i<count1;i++) { printf("%d %d\n",home[i],guest[i]); }*/ long long sum=0; for(i=1;i<count;i++) { int sum1=0,sum2=0,js; if(home[i-1]==0) { sum1+=val[0]; } else while(home[i-1]) { js=home[i-1]%10; sum1+=val[js]; home[i-1]/=10; } int js1; if(guest[i-1]==0) { sum2+=val[0]; } else while(guest[i-1]) { js1=guest[i-1]%10; sum2+=val[js1]; guest[i-1]/=10; } time[i]=(sec[i].h-sec[i-1].h)*3600+(sec[i].m-sec[i-1].m)*60+(sec[i].s-sec[i-1].s)*1; sum+=time[i]*(sum1+sum2); //printf("%d\n",time[i]); //printf("%d\n",sum1+sum2); } printf("Case %d: %lld\n",yy++,sum); count=0; } return 0; }