View Code of Problem 100

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int fun(double x)
{
    int score;
    if(x>=0&&x<1.0/5)score=0;
    else if(x>=1.0/5&&x<2.0/5)score=1;
    else if(x>=2.0/5&&x<3.0/5)score=2;
    else if(x>=3.0/5&&x<4.0/5)score=3;
    else if(x>=4.0/5&&x<5.0/5)score=4;
    else score=5;
    return score;
}

struct song{
char name[31];
int timeM;
int timeS;
int score;
};

bool cmp(struct song m,struct song n)
{
    if(m.score>n.score)return true;
    else if(m.score==n.score)
    {
        if(strcmp(m.name,n.name)<0)
            return true;
        else return false;
    }
    else return false;
}
int main()
{
   int n,m;
   char ch=':';
   while(cin>>n)
   {
       if(n==0)break;
       struct song  p[n];
       for(int i=0;i<n;i++)
       {
           cin>>p[i].name>>p[i].timeM>>ch>>p[i].timeS;
       }
       cin>>m;
       struct song  q[m];
       for(int i=0;i<m;i++)
       {
           cin>>q[i].name>>q[i].timeM>>ch>>q[i].timeS;
       }

       for(int i=0;i<n;i++)
       {
           p[i].score=0;
           for(int j=0;j<m;j++)
           {
               if(strcmp(p[i].name,q[j].name)==0)
               p[i].score+=fun((q[j].timeM*60+q[j].timeS)*1.0/(p[i].timeM*60+p[i].timeS));
           }
       }
       sort(p,p+n,cmp);
       for(int i=0;i<n;i++)
         cout<<p[i].name<<" "<<p[i].score<<endl;
   }
    return 0;
}

Double click to view unformatted code.


Back to problem 100