top1编程
← 返回题目
题解

分数线划定

1 条题解

  • 0
    @ 2026-7-28 22:45:05
    #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;
    }
    
    • 1