View Code of Problem 100

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

class Music{

public:
	string name;
	double time;
	int grade=0;
	Music(string name, double time){
		this->name=name;
		this->time=time;
	}
	
};

bool cmp(Music m1, Music m2){
	if(m1.grade>m2.grade)
		return true;
	else if(m1.grade==m2.grade&&m1.name<m2.name)
		return true;
	return false;
}

int main(){
	
	int n, m;
	string name;
	int minute, second;
	double time, ltime;
	vector<Music> v;
	while(cin>>n){
		if(n==0)
			break;
		for(int i=0; i<n; i++){
			cin>>name;
			scanf("%2d:%2d", &minute, &second);
			time=minute*60+second;
			Music music(name, time);
			v.push_back(music);
		}
		cin>>m;
		for(int i=0; i<m; i++){
			cin>>name;
			scanf("%2d:%2d", &minute, &second);
			ltime=minute*60+second;
			for(int j=0; j<v.size(); j++){
				if(v[j].name==name){
					if(ltime==v[j].time)
						v[j].grade+=5;
					else if(ltime>=v[j].time*0.2&&ltime<v[j].time*0.4)
						v[j].grade+=1;
					else if(ltime>=v[j].time*0.4&&ltime<v[j].time*0.6)
						v[j].grade+=2;
					else if(ltime>=v[j].time*0.6&&ltime<v[j].time*0.8)
						v[j].grade+=3;
					else if(ltime>=v[j].time*0.8&&ltime<v[j].time)
						v[j].grade+=4;
				}
			}
		}
		
		sort(v.begin(), v.end(), cmp);
		
		for(int i=0; i<v.size(); i++)
			cout<<v[i].name<<" "<<v[i].grade<<endl;
		v.clear();
	}
	
	
	return 0;
}

Double click to view unformatted code.


Back to problem 100