给出第 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\n",ans[i]); 47 puts(""); 48 } 49 }
时间: 2024-10-25 06:44:20