View Code of Problem 100

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
typedef struct music {
	string name;
	string time;
	double t;
	int score;
}music;
double cal(string s)
{
	int num1 = 0;
	for (int j = 0;j < 2;j++)
	{
		num1 = num1 * 10 + s[j] - '0';
	}
	int num2 = 0;
	for (int j = 3;j < 5;j++)
	{
		num2 = num2 * 10 + s[j] - '0';
	}
	return num1 * 60 + num2;
}
bool cmp(music a, music b)
{
	if (a.score != b.score)
		return a.score > b.score;
	else if (a.score == b.score&&a.name != b.name)
		return a.name < b.name;
}
int main()
{
	int n;
	music a[101];
	while (cin >> n)
	{
		if (n == 0)
			break;
		else
		{
			for (int i = 0;i < n;i++)
			{
				cin >> a[i].name >> a[i].time;
				a[i].score = 0;
				a[i].t = cal(a[i].time);
				//cout << a[i].t << endl;
			}
			int m;
			cin >> m;
			while (m--)
			{
				string s1, s2;
				cin >> s1 >> s2;
				double time = cal(s2);
				for (int i = 0;i < n;i++)
				{
					if (s1 == a[i].name)
					{
						double x = a[i].t / (double)5;
						a[i].score += (int)(time / x);
						//cout << a[i].score;
						break;
					}
				}
			}
			sort(a, a + n, cmp);
			for (int i = 0;i < n;i++)
			{
				cout <<a[i].name<<" "<< a[i].score << endl;
			}
		}
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 100