View Code of Problem 100

#include<stdio.h>
#include<string.h>
struct song
{
	char name[100];
	int minutes;
	int second;	
};

int main()
{
	int n,m;
	while(scanf("%d",&n))
	{
		if(n==0)
		{
			break;
		}
		struct song song[n];
		for(int i=0;i<n;i++)
		{
			scanf("%s %d:%d",song[i].name,&song[i].minutes,&song[i].second);
		}
		scanf("%d",&m); 

		struct song listen[m];
		for(int i=0;i<m;i++)
		{
			scanf("%s %d:%d",listen[i].name,&listen[i].minutes,&listen[i].second);
		}
		
		int array[n];
		memset(array,0,sizeof(array));
		
		for(int i=0;i<m;i++)
		{
			for(int j=0;j<n;j++)
			{
				if(strcmp(listen[i].name,song[j].name)==0)
					{	
						float a=song[j].minutes*60+song[j].second;
						float b=listen[i].minutes*60+listen[i].second;
						float k=b/a;
						if(k<0.2)
							array[j]+=0;	
						if(k>=0.2&&k<0.4)
							array[j]+=1;	
						if(k>=0.4&&k<0.6)
							array[j]+=2;
						if(k>=0.6&&k<0.8)
							array[j]+=3;
						if(k>=0.8&&k<1)
							array[j]+=4;
						if(k==1)
							array[j]+=5;
					}	
			}			
		} 
				 
		
		 for(int i=0;i<n;i++)
		 {
		 	int max=array[0];
			 int flag=0;
		 	for(int j=0;j<n;j++)
			{
				if(array[j]>max) //比较得分 
				{
					max=array[j];
					flag=j;
				}	
				else if(array[j]==max)  
				{
					if(strcmp(song[j].name,song[flag].name)<0)   // 得分相同比较字母 
					{
						max=array[j];
						flag=j;
					}
				}
			}
			printf("%s %d\n",song[flag].name,array[flag]);
				array[flag]=0;
		 }	 
	}
}

Double click to view unformatted code.


Back to problem 100