HDU 1084

给出第 i 个学生做完的题数和时间,给学生打分

排个序就行了吧

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cstring>
 5 using namespace std;
 6 const int N=105;
 7 struct stu{
 8     int h,m,s,num,sco;
 9 }a[10][N];
10 int n,m[N],p,h,mm,s,ans[N];
11 bool cmp(stu a,stu b)
12 {
13     if(a.h==b.h)
14     {
15         if(a.m==b.m) return a.s<b.s;
16         return a.m<b.m;
17     }
18     return a.h<b.h;
19 }
20 void fuc(stu a[],int m,int t)
21 {
22     for(int i=1;i<=m;i++)
23     {
24         if(i<=m/2) ans[a[i].num]=t+5;
25         else ans[a[i].num]=t;
26     }
27 }
28 int main()
29 {
30     while(~scanf("%d",&n)&&n!=-1)
31     {
32         memset(m,0,sizeof(m));
33         for(int i=1;i<=n;i++)
34         {
35             scanf("%d %d:%d:%d",&p,&h,&mm,&s);
36             m[p]++;
37             a[p][m[p]].num=i;
38             a[p][m[p]].h=h;
39             a[p][m[p]].m=mm;
40             a[p][m[p]].s=s;
41         }
42         for(int i=1;i<=4;i++) sort(a[i]+1,a[i]+m[i]+1,cmp);
43         for(int i=1;i<=m[0];i++) ans[a[0][i].num]=50;
44         for(int i=1;i<=m[5];i++) ans[a[5][i].num]=100;
45         for(int i=1;i<=4;i++) fuc(a[i],m[i],10*i+50);
46         for(int i=1;i<=n;i++) printf("%d
",ans[i]);
47         puts("");
48     }
49 }
我自倾杯,君且随意
原文地址:https://www.cnblogs.com/nicetomeetu/p/5595298.html