侧边栏壁纸
  • 累计撰写 192 篇文章
  • 累计创建 2 个标签
  • 累计收到 87 条评论

【题解】T1180 分数线划定

Allen Best
2023-07-08 / 0 评论 / 2 点赞 / 48 阅读 / 601 字
温馨提示:
本文最后更新于 2023-07-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
#include <bits/stdc++.h>
using namespace std;
#define N 5005
struct Stu
{
	int k, s;//k:报名号 s:成绩	
};
bool cmp(Stu a, Stu b)
{
	if(a.s == b.s)//如果分数相同 
		return a.k < b.k;//报名号小的在前面 
	else//如果分数不同 
		return a.s > b.s;//成绩高的在前面 
}
int main()
{
	Stu stu[N];
	int n, m, line, ct = 0;//line:分数线 ct:人数 
	cin >> n >> m;
	for(int i = 1; i <= n; ++i)
		cin >> stu[i].k >> stu[i].s;
	sort(stu+1, stu+1+n, cmp);//根据cmp指定的规则进行排序 
	line = stu[int(m*1.5)].s;//确定分数线
	for(int i = 1; i <= n; ++i)
	{
		if(stu[i].s >= line)
			ct++;
	}
	cout << line << ' ' << ct << endl;
	for(int i = 1; i <= ct; ++i)//输出前ct个人的信息 
		cout << stu[i].k << ' ' << stu[i].s << endl;
	return 0;
}
0

评论区