水題,理解好題意,多注意細節就行。直接貼代碼
#include<stdio.h> #include<string.h> struct node { int n; char time[20]; int score; int current; //在當前題目數的排位 } stu[100]; int score[6][2]={50,50,60,65,70,75,80,85,90,95,100,100}; int main() { int n; while(scanf("%d",&n) && n != -1) { int count[6] ={0}; for(int i = 0;i < n;i++) { scanf("%d %s",&stu[i].n,stu[i].time); stu[i].current = 1; count[stu[i].n]++; } for(int i = 0;i < n;i++) { for(int j = 0;j < n;j++) { if(stu[i].n == stu[j].n && strcmp(stu[j].time,stu[i].time) < 0) { stu[i].current ++; } } } for(int i = 1;i < 6;i++) { if(count[i]%2) count[i]--; count[i]/=2; } for(int i = 0;i < n;i++) { if(stu[i].current > count[stu[i].n]) stu[i].score = score[stu[i].n][0]; else stu[i].score = score[stu[i].n][1]; } for(int i = 0; i < n; i++) { printf("%d\n",stu[i].score); } printf("\n"); } }