#include<stdio.h> #include<string.h> struct song { char name[100]; int minutes; int second; }; int main() { int n,m; while(scanf("%d",&n)) { if(n==0) { break; } struct song song[n]; for(int i=0;i<n;i++) { scanf("%s %d:%d",song[i].name,&song[i].minutes,&song[i].second); } scanf("%d",&m); struct song listen[m]; for(int i=0;i<m;i++) { scanf("%s %d:%d",listen[i].name,&listen[i].minutes,&listen[i].second); } int array[n]; memset(array,0,sizeof(array)); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { if(strcmp(listen[i].name,song[j].name)==0) { float a=song[j].minutes*60+song[j].second; float b=listen[i].minutes*60+listen[i].second; float k=b/a; if(k<0.2) array[j]+=0; if(k>=0.2&&k<0.4) array[j]+=1; if(k>=0.4&&k<0.6) array[j]+=2; if(k>=0.6&&k<0.8) array[j]+=3; if(k>=0.8&&k<1) array[j]+=4; if(k==1) array[j]+=5; } } } for(int i=0;i<n;i++) { int max=array[0]; int flag=0; for(int j=0;j<n;j++) { if(array[j]>max) //比较得分 { max=array[j]; flag=j; } else if(array[j]==max) { if(strcmp(song[j].name,song[flag].name)<0) // 得分相同比较字母 { max=array[j]; flag=j; } } } printf("%s %d\n",song[flag].name,array[flag]); array[flag]=0; } } } |
Double click to view unformatted code.