P1903 奖学金

P1903 奖学金(noip普及2007 No.1)

典型的结构体排序,学过结构体排序的都应该会做.

蒟蒻代码如下:

#include"stdio.h" //本人爱用c的头文件和格式;
#include"algorithm" //重要的 “算法库”;
typedef long long ll; //将long long简写为ll;
using namespace std;
const int MAXN=(int)1e6+5; //定义巨大常量;
struct stu { //存储结构体;
	int id; //学号;
	int tot,chinese; //总成绩和语文成绩;
} t[MAXN]; //定义类型为stu的一维数组t;
inline bool cmp(stu a,stu b) { //对stu类型单独↑排列;
	if(a.tot==b.tot) //如果总分相同;
		if(a.chinese==b.chinese) //则比较语文成绩;
			return a.id<b.id; //语文成绩相同,比较学号大小;
		else
			return a.chinese>b.chinese;
	else
		return a.tot>b.tot;
}
inline int read() { //快读;
	int s=0,w=1,ch;
	for(ch=getchar(); ch<'0'||ch>'9'; ch=getchar()) if(ch=='-') w=-1;
	for(; ch>='0'&&ch<='9'; ch=getchar()) s=(s<<3)+(s<<1)+(ch^48);
	return s*w;
}
int main(int argc,char**argv) {
	register int n=read(),math,english; //由于数学英语不做比较,所以只要将他们设为形参就行了;
	for(register int i=1; i<=n; ++i) {
		t[i].id=i; //写出id(学号);
		t[i].chinese=read(),math=read(),english=read()//读入各项成绩;
		t[i].tot=t[i].chinese+math+english; //计算总分;
	}
	sort(t+1,t+1+n,cmp); //☆对结构体进行排序;
	for(register int i=1; i<=5; ++i) //输出前5名;
		printf("%d %d\n",t[i].id,t[i].tot); //学号和总成绩;
	return 0; //华华丽丽地结束;
    //o╬o <-防伪标记;
}

蒟蒻终于写完题解了!(……

蒟蒻题解Day.4…
See you tomorrow

你可能感兴趣的:(洛咕,计算机)