将解决题目数相同的进行排序,求前半部分的最高时间
#include<stdio.h>
#include<stdlib.h>
struct st
{
int s,t;
}p[1001];
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int i,n,a,b,c,d,s[6][1001],len[6];
while(scanf("%d",&n),n>=0)
{
len[0]=len[1]=len[2]=len[3]=len[4]=len[5]=0;
for(i=0;i<n;i++)
{
scanf("%d %d:%d:%d",&a,&b,&c,&d);
b=b*3600+c*60+d;
p[i].s=a;p[i].t=b;
s[a][len[a]++]=b;
}
qsort(s[1],len[1],sizeof(s[1][0]),cmp);
qsort(s[2],len[2],sizeof(s[2][0]),cmp);
qsort(s[3],len[3],sizeof(s[3][0]),cmp);
qsort(s[4],len[4],sizeof(s[4][0]),cmp);
for(i=1;i<5;i++)
{
if(len[i]>1)
len[i]=(len[i]/2)-1;
else if(len[i]==1)//如果只有一个人,
len[i]=0;
}
for(i=0;i<n;i++)
{
if(p[i].s<1)
printf("50\n");
else if(p[i].s==5)
puts("100");
else if(p[i].s==4)
{
if(p[i].t<=s[4][len[4]])
puts("95");
else puts("90");
}
else if(p[i].s==3)
{
if(p[i].t<=s[3][len[3]])
puts("85");
else puts("80");
}
else if(p[i].s==2)
{
if(p[i].t<=s[2][len[2]])
puts("75");
else puts("70");
}
else if(p[i].s==1)
{
if(p[i].t<=s[1][len[1]])
puts("65");
else puts("60");
}
}
printf("\n");
}
return 0;
}