#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> typedef struct{ char name[110]; int min; int second; int time; int score; }music; int main(){ music a[110]; int listenTime; int n,m,x,y; char temp[50]; while(scanf("%d",&n)!=EOF&&n!=0){ for(int i=0;i<n;i++){ scanf("%s %d:%d",&a[i].name,&a[i].min,&a[i].second); a[i].score=0; a[i].time=a[i].min*60+a[i].second; } scanf("%d",&m); for(int i=0;i<m;i++){ scanf("%s %d:%d",&temp,&x,&y); listenTime=x*60+y; for(int j=0;j<n;j++){ if(strcmp(temp,a[j].name)==0){ if(listenTime==a[j].time){ a[j].score+=5; }else if(listenTime<a[j].time&&listenTime>=a[j].time/5.0*4){ a[j].score+=4; }else if(listenTime<a[j].time/5.0*4&&listenTime>=a[j].time/5.0*3){ a[j].score+=3; }else if(listenTime<a[j].time/5.0*3&&listenTime>=a[j].time/5.0*2){ a[j].score+=2; }else if(listenTime<a[j].time/5.0*2&&listenTime>=a[j].time/5.0){ a[j].score+=1; } break; } } } music t; for(int i=0;i<n;i++){ for(int j=0;j<n-i-1;j++){ if(a[j].score<a[j+1].score){ t=a[j+1]; a[j+1]=a[j]; a[j]=t; }else if(a[j].score==a[j+1].score){ if(strcmp(a[j].name,a[j+1].name)>0){ t=a[j+1]; a[j+1]=a[j]; a[j]=t; } } } } for(int i=0;i<n;i++){ printf("%s %d\n",a[i].name,a[i].score); } } } |
Double click to view unformatted code.