SDUT 期末考试之排名次

Posted on 2014-04-05 21:57  ttop  阅读(373)  评论(0)    收藏  举报

期末考试之排名次

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

期末考试结束了,童鞋们的成绩也出来的了,可是为了排名次可忙坏了老师,因为学生太多了。这时,老师把这个任务交给了你,希望你能帮老师完成。作为IT人,你当然不能用笨笨的人工方法了,编程解决才是好办法。
共有三门课,语文、数学和英语,要求根据学生的各科成绩计算出其总成绩,并根据总成绩从高到低排序。

输入

第一行一个整数N(N<=100),代表学生的人数。
接下来的N行数据,每行有三个整数,C,M,E分别代表一个学生语文、数学和英语的成绩。

输出

一共N行,每行一个数,从大到小,分别代表各个学生的总成绩。

示例输入

3
70 80 90
59 59 59
100 100 100

示例输出

300
240
177

#include<stdio.h>
#include<algorithm>
using namespace std;

struct node
{
    int id,num,shunxu;
} team[10007];

int cmp(const node a,const node b)
{
    if(a.num==b.num) return a.shunxu<b.shunxu;
    return a.num>b.num;
}

int main()
{
    int t,i;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        for(i=0; i<n; i++)
        {
            scanf("%d %d",&team[i].id,&team[i].num);
            team[i].shunxu=i;
        }
        sort(team,team+n,cmp);
        for(i=0; i<n; i++)
            printf("%d %d\n",team[i].id,team[i].num);
    }
    return 0;
}