3376.成绩排序2

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

struct student {
	int grade;
	int id;
};

//改写比较规则
bool compare(student l, student r) {
	//l.grade<r.grade不用交换
	//l.grade=r.grade,且l.id<r.id不用交换
	if (l.grade < r.grade) {
		return true;
	}
	else if (l.grade == r.grade && l.id < r.id) {
		return true;
	}
	else {
		return false;
	}
}

int main() {
	int N;

	while (scanf("%d", &N) != EOF) {
		//student结构体类型的动态数组
		vector<student> students(N);
		//输入N个学生的学号和成绩
		for (int i = 0; i < N; i++) {
			scanf("%d %d", &students[i].id, &students[i].grade);
		}
		//排序
		sort(students.begin(), students.end(), compare);
		//打印学生学号 成绩
		for (int i = 0; i < N; i++) {
			printf("%d %d\n", students[i].id, students[i].grade);
		}



	}
	return 0;
}

题目链接

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务