View Code of Problem 100

#include <stdio.h>
#include <string.h>
typedef struct{
  char name[35];
  char time[5];
}music;
double  transtime (char a[5]){
	int c[2]={0};
    int q=0;
    for(int p=0;p<strlen(a);p++)
         if(a[p]==':')
             q++;
          else
             c[q]=c[q]*10+a[p]-'0';
     return (c[0]*60.0+c[1]);
}
int main(){
 
int i,j;
  music s[108];
  int m,n;
  while (scanf("%d",&n)!=EOF){
    if(n==0)
      break;
    double ztime[108];
	double rtime[10000];
  	for(i=1;i<=n;i++){
    	scanf("%s %s",&s[i].name,&s[i].time);
          ztime[i]=transtime(s[i].time);
 	 }
	 
    scanf("%d",&m);
	double result;
    char a[30],b[5];
	double score[108]={0};
    for(i=1;i<=m;i++){
      scanf("%s %s",&a,&b);
      rtime[i]=transtime(b);
      for(j=1;j<=n;j++){
        if(strcmp(s[j].name,a)==0){
          result=rtime[i]/ztime[j];
          if(result>0&&result<0.2)
            score[j]+=0;
          if(result>=0.2&&result<=0.4)
            score[j]+=1;
          if(result>=0.4&&result<0.6)
            score[j]+=2;
          if(result>=0.6&&result<0.8)
            score[j]+=3;
          if(result>=0.8&&result<1.0)
            score[j]+=4;
          if(result==1.0)
            score[j]+=5;
        }
      }
    }
	
	
	int temp;
	double max;
	int l=n;
    while (l--){
    temp=1;
    max=score[1];
    for(i=2;i<=n;i++){
      if(score[i]>max){
        max=score[i];
        temp=i;
        
      }
	  if(score[i]==max){
		  if(strcmp(s[i].name,s[temp].name)<0){
			  max=score[i];
			  temp=i;
		  }

	  }
    }
    printf("%s %.0f\n",s[temp].name,score[temp]);
    score[temp]=-1;
  }
    
  }
  
  
  
  
  
  
  return 0;
}

Double click to view unformatted code.


Back to problem 100