View Code of Problem 100

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
typedef struct{
	char name[110];
	int min;
	int second;
	int time;
	int score;
}music;
int main(){
	music a[110];
	int listenTime;
	int n,m,x,y;
	char temp[50];
	while(scanf("%d",&n)!=EOF&&n!=0){
		for(int i=0;i<n;i++){
			scanf("%s %d:%d",&a[i].name,&a[i].min,&a[i].second);
			a[i].score=0;
			a[i].time=a[i].min*60+a[i].second;
		}
		scanf("%d",&m);
		for(int i=0;i<m;i++){
			scanf("%s %d:%d",&temp,&x,&y);
			listenTime=x*60+y;
			for(int j=0;j<n;j++){
				if(strcmp(temp,a[j].name)==0){
					if(listenTime==a[j].time){
						a[j].score+=5;
					}else if(listenTime<a[j].time&&listenTime>=a[j].time/5.0*4){
						a[j].score+=4;
					}else if(listenTime<a[j].time/5.0*4&&listenTime>=a[j].time/5.0*3){
						a[j].score+=3;
					}else if(listenTime<a[j].time/5.0*3&&listenTime>=a[j].time/5.0*2){
						a[j].score+=2;
					}else if(listenTime<a[j].time/5.0*2&&listenTime>=a[j].time/5.0){
						a[j].score+=1;
					}
					break;
				}
			}
		}
		music t;
		for(int i=0;i<n;i++){
			for(int j=0;j<n-i-1;j++){
				if(a[j].score<a[j+1].score){
					t=a[j+1];
					a[j+1]=a[j];
					a[j]=t;
				}else if(a[j].score==a[j+1].score){
					if(strcmp(a[j].name,a[j+1].name)>0){
						t=a[j+1];
						a[j+1]=a[j];
						a[j]=t;
					}
				}
			}
		}
		for(int i=0;i<n;i++){
			printf("%s %d\n",a[i].name,a[i].score);
		}
	}
}



	

Double click to view unformatted code.


Back to problem 100