View Code of Problem 100

#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.


Back to problem 100