水题,理解好题意,多注意细节就行。直接贴代码

#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");
  }
  
}