1032. 挖掘机技术哪家强

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

输入格式:

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

输出格式:

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

输入样例:
6
3 65
2 80
1 100
2 70
3 40
3 0
输出样例:
2 150
算法:
  1. 算法开始。
  2. 声明定义结构体,包括学校编号和比赛成绩。
  3. 读入参赛人数,i=0。
  4. 如果i>=参赛人数,则跳到第七步。
  5. 读入学校编号和比赛成绩。
  6. i++。回到第四步。
  7. 用qsort()函数给该结构数组排序。
  8. i=0。
  9. 如果i>=参赛人数,则跳到第十四步。
  10. 如果学校编号没有发生变化,则该参赛者成绩加到tmp中的分数中。跳到第十三步。
  11. 如果学校编号发生变化,则tmp中的分数与max中的分数进行比较,如果前者大于后者,则max=tmp。
  12. tmp中的学校编号等于当前学校编号,tmp的成绩等于该参赛者的成绩。
  13. i++,回到第九步。
  14. 输出学校编号和总成绩。
  15. 算法结束。

#include 
#include 
typedef struct{
    int index;
    int grade;
}competitor;
int cmp(const void* v1, const void* v2);
int main(int argc, const char * argv[]) {
    int n,i;
    competitor* ptr;
    competitor tmp={0}, max={0};
    scanf("%d",&n);
    ptr=(competitor*)calloc(n, sizeof(competitor));
    for(i=0;imax.grade){
        max=tmp;
    }
    printf("%d %d", max.index, max.grade);
    return 0;
}

int cmp(const void* v1, const void* v2){
    if(((competitor*)v1)->index>((competitor*)v2)->index){
        return 1;
    }
    else if(((competitor*)v1)->index==((competitor*)v2)->index){
        return 0;
    }
    else{
        return -1;
    }
}


你可能感兴趣的:(PAT)