#include <stdio.h> #include <string.h> typedef struct node{ char s[100]; int t,sc; }music; int cmp(const void* a, const void* b) { music* c = (music*)a; music* d = (music*)b; return d->sc - c->sc; } int main(void) { int n,i,m; while(scanf("%d",&n) != EOF && n) { getchar(); char str[200]; music ms[10000]; for(i = 0;i < n;i++) { gets(str); char str1[200];//minute[3],second[3]; int minute,second; sscanf(str,"%s %d:%d",str1,&minute,&second); strcpy(ms[i].s,str1); ms[i].t = minute * 60 + second; ms[i].sc = 0; } scanf("%d",&m); getchar(); while(m--) { gets(str); char str2[200]; int minute,second,tt; sscanf(str,"%s %d:%d",str2,&minute,&second); tt = minute * 60 + second; for(i = 0;i < n;i++) { if(strcmp(ms[i].s,str2) == 0) { if(ms[i].t / 5 > tt) ms[i].sc += 0; else if(ms[i].t / 5 <= tt && ms[i].t * 2 / 5 > tt) ms[i].sc += 1; else if(ms[i].t * 2 / 5 <= tt && ms[i].t * 3 / 5 > tt) ms[i].sc += 2; else if(ms[i].t * 3 / 5 <= tt && ms[i].t * 4 / 5 > tt) ms[i].sc += 3; else if(ms[i].t * 4 / 5 <= tt && ms[i].t > tt) ms[i].sc += 4; else ms[i].sc += 5; } } } qsort(ms,n,sizeof(music),cmp); for(i = 0;i < n;i++) printf("%s %d\n",ms[i].s,ms[i].sc); } return 0; } |
Double click to view unformatted code.