1032. 挖掘机技术哪家强(20)

来源:互联网 发布:桂树焉知泰山之高的焉 编辑:程序博客网 时间:2024/04/30 15:09

为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

输入格式:

输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。

输出格式:

在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

输入样例:
63 652 801 1002 703 403 0
输出样例:

2 150

思路分析:排序,不难。

代码如下:

// 挖掘机技术哪家强.cpp : 定义控制台应用程序的入口点。//#include <stdio.h>#include<stdlib.h>typedef struct {  int schooln;  int gra;} stu;typedef struct {  int num=0;  int sum=0;}school;int cmp(const void *a, const void *b){  school *pa;  school *pb;  pa = (school *)a;  pb = (school *)b;  return pa->sum - pb->sum;}int main(){  //school schoola[100000];  //stu stua[100000];  int n,max=0,i;  stu *stua=NULL;  school *schoola=NULL;  scanf("%d", &n);  stua = (stu *)malloc(sizeof(stu)*n);  for (i = 0; i < n; i++)  {    scanf("%d%d", &stua[i].schooln, &stua[i].gra);    //schoola[stua[i].schooln-1].sum += stua[i].gra;    //schoola[stua[i].schooln-1].num = stua[i].schooln;    if (stua[i].schooln-1>max)      max = stua[i].schooln-1;  }  schoola = (school *)malloc(sizeof(school)*(max + 1));  for (i = 0; i < max+1; i++)  {    schoola[i].sum = 0;  }  for (i = 0; i < n; i++)  {    schoola[stua[i].schooln - 1].sum += stua[i].gra;    schoola[stua[i].schooln - 1].num = stua[i].schooln;  }  qsort(schoola, max + 1, sizeof(school), cmp);  printf("%d %d", schoola[max].num, schoola[max].sum);  free(schoola);  free(stua);    return 0;}

0 0