View Code of Problem 100

#include<stdio.h>
#include<algorithm>
#include<string> 
#include<iostream>
using namespace std;
struct music{
	string name;
	int grade;
}msc[100];
bool cmp(music a,music b)
{
	if(a.grade==b.grade)
	return a.name<b.name;
	else
	return a.grade>b.grade;
}
int main()
{
	string str2[10000];double a[100],b[10000];
	int c,d,m,n;
	while(scanf("%d",&n)!=EOF&&n!=0)
	{
		
		for(int i=0;i<n;i++)
		{
			cin>>msc[i].name;
			scanf("%d:%d",&c,&d);
			a[i]=c*60+d;
		}
		scanf("%d",&m);
		for(int i=0;i<m;i++)
		{
			cin>>str2[i];
			scanf("%d:%d",&c,&d);
			b[i]=c*60+d;
		}
		for(int i=0;i<n;i++)
		{
			msc[i].grade=0;
			for(int j=0;j<m;j++)
			{
				if(str2[j]==msc[i].name)
				{
					if(b[j]/a[i]>=0.2&&b[j]/a[i]<0.4)
					msc[i].grade+=1;
					else if(b[j]/a[i]>=0.4&&b[j]/a[i]<0.6)
					msc[i].grade+=2;
					else if(b[j]/a[i]>=0.6&&b[j]/a[i]<0.8)
					msc[i].grade+=3;
					else if(b[j]/a[i]>=0.8&&b[j]/a[i]<1)
					msc[i].grade+=4;
					else if(b[j]/a[i]==1)
					msc[i].grade+=5;
				}
			}
		}
		sort(msc,msc+n,cmp);
		for(int i=0;i<n;i++)
		{
			cout<<msc[i].name<<" "<<msc[i].grade<<endl;
		}
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 100