View Code of Problem 100

#include<stdio.h>
#include<string.h>
typedef struct{
	char name[200];
	int sec;
	int score;
}song;
int cmp(const void*a,const void*b){
	return   (*(song *)b).score-(*(song *)a).score;
}
int score(float n,float m){
	float score = (n*1.0/m*1.0 )*100.0;
	if(score == 100)	return 5;
	else if(score >= 80) 	return 4;
	else if(score >= 60) 	return 3;
	else if(score >= 40) 	return 2;
	else if(score >= 20) 	return 1;
	else	return 0;
}
int main(){
	int n;
	while(scanf("%d",&n)!=EOF&&n!=0){
		int min,sec;
		song a[n];
		int i,j,k;
		for(i = 0;i < n; i++){
			scanf("%s",a[i].name);
			scanf("%d:%d",&min,&sec);
			a[i].sec = min*60 + sec;
			a[i].score = 0;
		}
		int t;
		scanf("%d",&t);
		for(i = 0;i < t; i++){
			char temp[200];
			scanf("%s",temp);
			scanf("%d:%d",&min,&sec);
			int time = min*60 + sec;
			for(j = 0;j < n; j++){
				if(strcmp(temp,a[j].name)==0){
					a[j].score = a[j].score + score(time,a[j].sec);
				}
			}
		}
		qsort(a,n,sizeof(song),cmp);
		for(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